Question

En plus de complexité cyclomatique ce que d'autres systèmes métriques de code existent?

Autres conseils

Wikipedia fournit une simple métriques .

Il y a en fait beaucoup, et beaucoup de mesures. En fait, any fonction du code source qui mappe le code source à une échelle de mesure (nombres entiers, nombres réels, énumérations de classification) peut être considéré comme une métrique.

Le problème avec la plupart des mesures de code est qu'ils ont tendance à être proportionnelle à SLOC, et si tel est le cas, le SLOC est tout aussi bon. Quel est le meilleur à voir avec des mesures est de mesurer votre code maintenant, et de suivre comment les changements métriques au fil du temps; la tendance, vers le haut ou vers le bas, vous dira presque plus que la mesure sera elle-même. Up signifie de mauvaises nouvelles; le code devient plus compliqué.

Il est également utile d'envisager des mesures de code (complexité) en conjonction avec des taux de bugs. Une grande complexité dans un module, et et le taux élevé de bogue dans le même module, suggère qu'une refonte de ce module peut être une bonne idée pour éviter d'autres problèmes dans le domaine. Une grande complexité et un faible taux de bugs suggéreraient le code semble effrayant, mais n'est pas.

Sciences Software Halstead est une suite de mesures fantastique qui peut vous donner aperçu intéressant dans les constructions réelles de votre programme.

Il existe un modèle créé ainsi par carte et en verre, mais je ne suis pas sûr si cela est disponible en dehors des livres. Je chercher indépendamment.

Jetez un oeil sur les 82 définitions supportées par l'outil intégré dans Visual NDepend studio 2012, 2010 et 2008. Disclaimer: Je suis l'un des développeurs de l'outil

Notez que ces mesures de code peuvent être composés par CQLinq requêtes et règles pour définir vos propres paramètres de code personnalisé.

métrique Par exemple, d'un code populaire autre que complexité cyclomatique est le CRAP métrique. En gros, le C.R.A.P définir le code merdique comme des méthodes complexes (avec haut complexité cyclomatique ), mal couvert par des tests. défaut CQLinq règle pour définir le CRAP métrique est:

// <Name>C.R.A.P method code metric</Name>
// Change Risk Analyzer and Predictor (i.e. CRAP) code metric
// This code metric helps in pinpointing overly complex and untested code.
// Reference: http://www.artima.com/weblogs/viewpost.jsp?thread=215899
// Formula:   CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
warnif count > 0
from m in JustMyCode.Methods

// Don't match too short methods
where m.NbLinesOfCode > 10

let CC = m.CyclomaticComplexity
let uncov = (100 - m.PercentageCoverage) / 100f
let CRAP = (CC * CC * uncov * uncov * uncov) + CC
where CRAP != null && CRAP > 30
orderby CRAP descending, m.NbLinesOfCode descending
select new { m, CRAP, CC, uncoveredPercentage = uncov*100, m.NbLinesOfCode }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top