erramentas de reformatação / refatoração de código com reconhecimento de idioma @

Recentemente, eu me vi trabalhando com código R que está em todo o mapa em termos de estilo de codificação - vários autores e autores individuais que não são rigorosos quanto à aderência a uma única estrutura. Há certas tarefas que eu gostaria de automatizar melhor do que atualmente.

Estou procurando uma ferramenta (ou ferramentas) que gerencie as seguintes tarefas - listadas em ordem crescente de desejo, mas também em ordem crescente de ceticismo quanto à existênci

Formatação básica. Coisas como converter "if (foo)" para "if (foo)" e obter uniformidade em termos de localização da chave e esse tipo de cois

Convertendo "foo $ blah" para "foo [[" blah "]]]" para acessar a lista. O ideal seria pelo menos adivinhar se um objeto era realmente uma lista e não um data.frame e apenas converter lista

Converting '=' para '<-'. Sim, esta é uma pesquisa e substituição simples - mas não realmente. A ferramenta (ou regexp) precisa estar ciente do idioma para saber converter "x = 5", mas não "foo (x = 5)". Também seria muito bom não apenas substituir o símbolo, mas também garantir um espaço em branco único nos dois lados do operador de atribuiçã

enomeação variável, principalmente entre funções e arquivos. Por exemplo, suponha que uma lista tenha um elemento "foo", eu adoraria poder alterá-la para "foobar" uma vez e não precisar rastrear todos os usos dessa lista em todo o fluxo de código. Eu imagino que isso exigiria que a ferramenta fosse capaz de todo o fluxo de controle para identificar coisas como essa lista existentes como outro nome em uma função diferent

Convenções de nomenclatura. Gostaria de poder definir alguma convenção de nomenclatura padrão (por exemplo, Google ou o que for) e faça com que identifique todas as funções, variáveis, etc. e as converta. Observe que isso está relacionado à entrada anterior para itens como elementos da list

Sinta-se à vontade para listar comandos básicos de processamento unix (por exemplo, sed), desde que seja realmente inteligente o suficiente para pelo menos não estragar tudo (por exemplo, converter "foo (x = 5)" em "foo (x <-5 ) ").

Suponho que, se uma ferramenta desse tipo já existisse em um estado perfeito, já teria ouvido falar dela, e também estou percebendo que, com uma linguagem como R, é difícil fazer alguns desses tipos de alterações automaticamente. , mas pode-se sonhar, certo? Alguém tem dicas sobre alguns / todos estes?

questionAnswers(4)

yourAnswerToTheQuestion