Pergunta

Que ferramentas de análise estática para Java tem mais fácil mecanismo de extensão. Eu verifiquei PMD Mas o processo de escrever regras personalizadas parece estar muito envolvido. Especificamente, eu quero saber se há alguma ferramenta que oferece AspectJ como sintaxe para escolher as áreas interessantes de código? Estou ciente de AspectJ do declare warning , mas ele parece estar limitado no que pode fazer.

Eu encontrei uma questão relacionada:

recomendação ferramenta de análise estática para Java? Análise Estática recomendação ferramenta para Java?

As respostas listar muitas ferramentas. Mas eu quero descobrir qual deles oferece opção mais fácil para escrever regras personalizadas.

Editar: Até agora, expressões XPath do PMD sugeridos por Guillaume parece ser mais próximo do que eu estou procurando. Eu vou estar explorando-o em breve.

Foi útil?

Solução

O problema real com "estender" uma ferramenta de análise estática é "análise estática" é um tema amplo de tal forma que o que você precisa lotes de máquinas de fazê-lo em geral: análise, construção árvore, controle de extração gráfico de fluxo, fluxo de dados de extração , pontos-de análise, análise Interprocedimental, análise de gama, a lista vai sobre e sobre, ver as toneladas de literatura compilador em programas de análise.

Você pode usar a correspondência de padrão de sintaxe superfície para focalizar a atenção da ferramenta em algum código de programa, mas você ainda tem para explicar à ferramenta que você quer que ele "estaticamente analisar" em que ponto (E algumas análises [como pontos-to] exigem que você fazer a análise em todos os lugares em primeiro lugar, e depois é só escolher a parte que deseja).

Moral : não espere estendendo uma ferramenta para fazer a análise arbitrária para ser fácil. Você deve, basicamente, decidir que tipo de análise que se preocupam com antecedência (Insumos contaminados? Cheques alcance subscrito? Abuso API?) E encontrar uma ferramenta que já suporta esse tipo de coisa. Pelo menos, em seguida, suas "extensões" têm a chance de ser simples em virtude de ser semelhante ao que a ferramenta já faz.

O nosso DMS Software Reengineering Toolkit é uma tentativa de amortizar o custo de construção de todos os tipos de máquinas de análise através de muitas aplicações e langauges. Ele fornece a análise, controle de análise / fluxo de dados e pontos-de análise em graus variados para C, C ++, Java e COBOL. E tem superfície sintaxe correspondência de padrão para ajudá-lo "point". Consulte http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

Outras dicas

É realmente muito fácil de escrever regras personalizadas para PMD. PMD oferece uma sintaxe xPath-like para encontrar área interessante do seu código, por isso, se você tem alguma experiência mínima com XML, você será capaz de começar em nenhum momento. Eu sugiro que você investir 1-2 horas em ambos os PMD ou Findbugs e voltar aqui se você tiver perguntas específicas.

pode ser capaz de lhe dar uma resposta melhor se você nos dizer exatamente que tipo de regras que você está tentando escrever ...

Findbugs detector costume é bastante simples .

Você só soltá-lo no diretório de plug-in de sua instalação FindBugs, como explicar aqui .

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