Au travail, nous utilisons plusieurs outils pour capturer plusieurs métriques (principalement la complexité cyclomatique et la LCOM). Nous les utilisons pour obtenir des drapeaux d'avertissement et guider les efforts de refactoring préventifs. Cela a été très bénéfique pour augmenter la qualité du code.Annotations pour appliquer la complexité cyclomatique et les contraintes LCOM
Cependant, le processus n'est pas lié au processus de construction. Il est mené séparément. De plus, je cherche quelque chose qui peut être rendu intrinsèque au code source (par opposition à un processus externe exécuté dessus.)
Quelqu'un at-il connaissance d'un groupe d'annotations et de processeurs d'annotation configurables qui peuvent être exécuté à partir du compilateur, et qui va faire échouer la construction si le code n'est pas conforme aux métriques cyclomatic/LCOM de seuil? Je suppose que je pourrais lancer ckjm, checkstyle et pmd à partir de maven/ant, MAIS certains travaillent sur le code source, et d'autres fonctionnent sur le bytecode. Ce serait bien d'avoir un outil consolidé qui fonctionne sur le code source avant le début de la compilation.
L'autre chose est que ce serait bien s'il y a des ensembles d'annotations qui pourraient conduire ce (pour permettre la personnalisation qui sera être nécessaire inévitablement pour les cas d'angle.)
@LCOM3(Threshold=1.5)
public class SomeDumbPojo {... buch of gets/sets...}
// by default would be measured against a strict LCOM3
public class ActualBizClass
{
@CYCLOMATIC_COMPLEXITY(Threshold=15)
public void someFatIrreducibleMethod(){...}
}
Puis, quand nous Exécuter l'outil, par défaut, applique un seuil de métrique strict (et configurable) sauf sur les artefacts qui sont annotés avec des seuils plus souples (espérons documentés et légitimes). Pour certaines méthodes qui ne peuvent/ne doivent pas être réduites, une complexité cyclomatique relaxée est logique. Pour les POJO simples sans comportement, les LCOM doivent être assouplies ... et ainsi de suite.
En regardant et googling comme je pourrais, je n'ai pas été en mesure de trouver quelque chose (espérons open source). Mais je pourrais aussi bien demander ici au cas où quelqu'un serait au courant de quelque chose du genre.
Merci.
Mon mauvais, par «compilation», je veux dire l'étape où javac commence à cracher le bytecode. Nous utilisons un outil propriétaire au travail qui analyse le code source Java et en dérive des métriques (aucune compilation requise), mais l'outil ne peut pas être intégré dans le processus de construction. Quant à l'idée d'utiliser une annotation pour ajouter un seuil donné, c'est plus ou moins un produit du processus. Une construction est annulée si une classe a une méthode avec une complexité cyclomatique sur, disons, 10, sauf pour les cas documentés qui sont présentés, révisés et acceptés (et donc annotés de cette façon pour que la construction continue.) –