Pergunta

Eu estou tentando criar um aplicativo de pesquisa ColdFusion base de código da minha empresa. Eu gostaria de ser capaz de fazer buscas inteligentes, por exemplo: achado em que uma função é definida (e não bater em todos os lugares a função é chamada). A fim de fazer isso, eu preciso analisar o código ColdFusion para identificar coisas como declarações de funções, chamadas de função, consultas de banco de dados, etc.

Eu olhei para usando lex e yacc, mas eu nunca usei-los antes ea curva de aprendizado parece muito íngreme. Eu estou esperando há algo já lá fora que eu poderia usar. Minha outra opção é uma confusão de difícil de manter o código regex-spaghetti, o que eu quero evitar.

Foi útil?

Solução

Eu usei o href="http://trac.cfeclipse.org/browser" fonte para CFEclipse , uma vez que é open source e tem um parser. Não tenho certeza sobre a legalidade de tal se nós estavam vendendo / redistribuição, mas estamos apenas usando-o para uma ferramenta interna.

Outras dicas

Escrevendo analisadores para langauges reais é geralmente difícil, pois eles contêm construções que Lex e Yacc muitas vezes não lidar bem, por exemplo, o langauge não é LALR (1). ColdFusion pode ser mais fácil do que alguns por causa de seu XML-como estilo.

Se você quiser construir um parser sofisticado rapidamente, você pode considerar o uso nossa DMS Software Reengineering Toolkit que tem apoio analisar GLR.

Se você quiser evitar escrever o seu próprio ou cortar todos aqueles Regexps, você poderia considerar a nossa Source Code Search Engine . Tem analisadores sensível à linguagem e pode pesquisar em bases de código fonte muito grandes muito rapidamente. Um de seus analisadores "sensíveis de linguagem" é AdhocText, que é projetado para lidar com "genérico" linguagens como aqueles que você pode encontrar em um livro de programação aleatória de programação; ainda entende XML-like marcas tais como ColdFusion tem. Você pode baixar uma versão de avaliação do link fornecido para experimentá-lo.

EDIT 4/3/2010: Uma característica recente adicionado ao SCSE é a capacidade de definições de tag e usos separadamente. Isso resolveria o desejo do OP para encontrar a definição da função, em vez de todas as chamadas.

Nenhum existiu. Desde ColdFusion é mais como roteiros do que o código, eu imagino que vai ser difícil escrever um parser para ele.

ColdFusion Builder pode analisar CFM / CFC para um esboço em Eclipse. Talvez você possa fazer alguma investigação sobre se um plugin CF Builder pode fazer o que quer fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top