En plus de la complexité cyclomatique, quels autres systèmes de métriques de code existent?Systèmes métriques de codes disponibles?
Répondre
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.
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.
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 }
- 1. métriques de qualité logicielle
- 2. Métriques de similarité de chaîne en Python
- 3. Swing's BasicHTML.createHTMLAfficher l'utilisation des métriques
- 4. Métriques de polices incorrectes/manquantes dans Java?
- 5. Enregistrement des métriques de performance ASP.NET MVC
- 6. Existe-t-il des codes C++ disponibles pour afficher le document XPS?
- 7. Codes de réponse FTP
- 8. Où puis-je connaître les avantages et les inconvénients des différents systèmes de contrôle de source disponibles?
- 9. Plugin de métriques de code Visual Studio pour C++
- 10. Y a-t-il des systèmes de commentaires sur le site Web disponibles (comme phpbb pour les forums)?
- 11. Systèmes distribués, meilleur cadre?
- 12. WCF et systèmes embarqués
- 13. Comment interpréter les métriques de code (calculées par SourceMonitor)
- 14. Quelles métriques pour l'utilisation de l'interface graphique connaissez-vous?
- 15. Différence entre les codes d'état et les codes d'erreur
- 16. Dépendances de DLL - différentes sur différents systèmes?
- 17. Utilisation de C++ dans les systèmes embarqués
- 18. Interface native avec les systèmes de tickets
- 19. expressions régulières et de multiples systèmes d'écriture
- 20. configuration de sauvegarde des systèmes Master Hudson
- 21. Algorithmes de codage et de décodage de codes QR (codes à barres 2D)?
- 22. codes événement KeyDown
- 23. Codes d'état HTTP 1xx
- 24. liste des codes infrarouges?
- 25. Migration vers des systèmes ouverts
- 26. Énumérer une liste de systèmes Com Ports en Delphi
- 27. Construction identique sur différents systèmes
- 28. Python et différents systèmes d'exploitation
- 29. Introduction aux systèmes d'algèbre informatique?
- 30. Comment faire pour convertir la page de codes ascii en page de codes 1255
Ceci est une réponse? –
Ceci est une réponse * acceptée *? –