2009-08-13 9 views

Répondre

1

Halstead's Software Science est une suite de mesures fantastiques qui peuvent vous donner un aperçu intéressant des constructions réelles de votre programme.

Il existe également un modèle créé par Card et Glass, mais je ne suis pas sûr que ce soit disponible en dehors des livres. Je le chercherais malgré tout.

2

Wikipedia fournit un simple overview of metrics.

Il existe en fait beaucoup, et beaucoup de métriques. En fait, toute fonction du code source qui mappe le code source sur une échelle de mesure (entiers, réels, énumérations de classification) peut être considérée comme une métrique. Le problème avec la plupart des métriques de code est qu'elles ont tendance à être proportionnelles à SLOC, et si c'est le cas, SLOC est tout aussi bon. Ce qu'il est préférable de faire avec les métriques consiste à mesurer votre code maintenant et à suivre l'évolution de la métrique au fil du temps. la tendance, vers le haut ou vers le bas, vous dira presque plus que la métrique elle-même. Up signifie mauvaises nouvelles; le code devient plus compliqué.

Il est également utile de prendre en compte les métriques de code (complexité) en conjonction avec les taux de bug. Une complexité élevée dans un module, et et un taux de bogue élevé 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 sur le terrain. La complexité élevée et les faibles taux de bug suggèrent que le code semble effrayant mais ne l'est pas.

0

Jetez un oeil à 82 code metrics définitions supportées par l'outil NDepend intégré dans Visual 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é par CQLinq queries and rules pour définir vos propres métriques de code personnalisé. Par exemple, une métrique de code populaire autre que Cyclomatic Complexity est C.R.A.P metric. Fondamentalement, le C.R.A.P définir le code merdique comme des méthodes complexes (avec Cyclomatic Complexity), mal couvert par les tests. Le default CQLinq rule pour définir la C.R.A.P 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 } 
Questions connexes