2010-11-10 29 views
4

J'ai besoin d'un analyseur de code statique pour Java qui produise un fichier de sortie sur: les relations des classes (également les relations d'héritage), les champs des classes, les signatures de méthodes et les hiérarchies d'appels de méthodes.Quel analyseur de code statique Java est recommandé pour créer des rapports?

Le point important est que les données d'analyse peuvent être (facilement) traitées par un programme. (J'ai besoin de l'analyse pour un genre d'outil de "refactoring" automatique pour l'université.)

+0

Si vous allez refactoriser quelque chose, vous aurez besoin d'un outil capable d'analyser Java et d'effectuer la résolution de nom/type de toute façon. Un tel outil devrait être capable de produire les informations dont vous avez besoin plus ou moins directement. Pourquoi voudriez-vous un outil séparé pour le faire? –

Répondre

1

JastAdd est un bon analyseur de niveau de source (et beaucoup plus).

Vous pourriez préférer travailler sur le niveau bytecode. C'est plus simple, plus rapide, fournit toutes les informations que vous avez demandées, fonctionne sans source (évidemment) et avec d'autres langages basés sur JVM. Pour cela, soit Soot ou ASM est un bon choix.

MISE À JOUR

Bien sûr, avec bytecode vous ne pouvez pas vraiment réaliser niveau de la source refactoring (bien que vous pourriez faire la modification du bytecode).

Pour être complet, vous pouvez combiner les deux approches.