Question

Quels outils d’analyse statiques pour Java possèdent le mécanisme d’extension le plus simple. J'ai vérifié PMD Mais le processus d’écriture des règles personnalisées semble être très complexe. Plus précisément, je souhaite savoir s’il existe des outils offrant une syntaxe semblable à AspectJ pour sélectionner des zones de code intéressantes? Je connais les d'AspectJ déclarer un avertissement , mais son utilisation semble limitée.

J'ai trouvé une question connexe:

Recommandation de l'outil d'analyse statique pour Java? Recommandation de l'outil d'analyse statique pour Java?

Les réponses répertorient de nombreux outils. Mais je veux trouver laquelle offre l’option la plus simple pour écrire des règles personnalisées.

Modifier: Jusqu'à présent, les expressions XPath de PMD suggérées par Guillaume semblent correspondre le plus à ce que je recherche. Je vais l'explorer sous peu.

Était-ce utile?

La solution

Le vrai problème de "prolonger" un outil d'analyse statique est "analyse statique". est un sujet tellement vaste que vous avez besoin de beaucoup de machines pour le faire en général: analyse syntaxique, création d'arbres, extraction de graphe de flux de contrôle, extraction de flux de données, analyse de points, analyse interprocédurale, analyse de plage, la liste s'allonge encore et encore, voir les tonnes de littérature de compilation sur l'analyse des programmes

Vous pouvez utiliser la correspondance de modèle de la syntaxe de surface pour attirer l'attention de l'outil sur certains codes de programme, mais vous aurez toujours expliquer à l’outil ce que vous souhaitez "analyser statiquement" à ce moment (et certaines analyses [telles que les points-à] exigent que vous fassiez l'analyse partout d’abord, puis choisissez simplement la partie que vous voulez).

Moral : ne vous attendez pas à ce que l'extension d'un outil d'analyse statistique soit simple. Vous devez essentiellement décider du type d’analyse qui vous tient à l’avance. (entrées corrompues? contrôles de plage d’indice? abus d’API?) et trouver un outil qui soutient déjà ce genre de chose. Au moins, vos "extensions" avoir une chance d'être simple du fait de sa similitude avec ce que l'outil fait déjà.

Notre boîte à outils DMS Software Reengineering est une tentative d’amortir les coûts de construction de toutes sortes de machines d’analyse dans de nombreuses applications et dans de nombreux langages. Il fournit l'analyse syntaxique, l'analyse de contrôle / flux de données et l'analyse par points à des degrés divers pour C, C ++, Java et COBOL. Et il a la syntaxe de surface correspondance de motif pour vous aider à "pointer". Voir http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

Autres conseils

Il est en fait assez facile d’écrire des règles personnalisées pour PMD. PMD fournit une syntaxe semblable à xPath pour trouver une zone intéressante de votre code. Ainsi, si vous avez une expérience minimale de XML, vous pourrez commencer rapidement. Je vous suggère d’investir 1 à 2 heures dans PMD ou Findbugs et de revenir ici si vous avez des questions spécifiques.

Nous pourrons peut-être mieux vous répondre si vous nous indiquez exactement le type de règles que vous essayez d'écrire ...

Rédaction d'un Détecteur personnalisé : très simple .

Vous venez de le déposer dans le répertoire du plugin de votre installation de FindBugs, comme expliqué ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top