Welche anderen Code-Metrik-Systeme existieren neben Cyclomatic Complexity?Verfügbare Codesysteme?
Antwort
Halstead's Software Science ist eine fantastische Metriken Suite, die Sie interessanten Einblick in die tatsächlichen Konstrukte des Programms geben.
Es gibt auch ein Modell von Card and Glass, aber ich bin nicht sicher, ob das außerhalb von Büchern verfügbar ist. Ich würde es trotzdem suchen.
Wikipedia bietet eine simple overview of metrics.
Es gibt tatsächlich viele und viele Metriken. Tatsächlich kann die beliebige Funktion des Quellcodes, der Quellcode einer Messskala zuordnet (Integer, Reals, Klassifikationsaufzählungen), als eine Metrik angesehen werden.
Das Problem mit den meisten Code-Metriken ist, dass sie eher proportional zu SLOC sind, und wenn das der Fall ist, ist SLOC genauso gut. Was am besten mit Metriken zu tun hat, ist, Ihren Code jetzt zu messen und zu verfolgen, wie sich die Metrik im Laufe der Zeit ändert. Der Trend, nach oben oder unten, wird Ihnen fast mehr sagen als die Metrik selbst. Up bedeutet schlechte Nachrichten; Der Code wird komplizierter.
Es ist auch nützlich, Code- (Komplexitäts-) Metriken in Verbindung mit Fehlerraten zu betrachten. Eine hohe Komplexität in einem Modul, und und hohe Fehlerrate im selben Modul, deutet darauf hin, dass ein Redesign dieses Moduls eine gute Idee sein könnte, um weitere Probleme auf dem Gebiet zu verhindern. Hohe Komplexität und niedrige Fehlerraten lassen vermuten, dass der Code unheimlich aussieht, aber nicht.
Werfen Sie einen Blick auf die durch das Tool unterstützt 82 code metrics Definitionen NDepend in Visual Studio 2012 integriert, 2010 und 2008 Disclaimer: Ich bin einer der Entwickler des Werkzeugs
Beachten Sie, dass diese Metriken Code kann durch CQLinq queries and rules komponiert werden, um Ihre eigenen benutzerdefinierten Code-Metriken zu definieren.
Zum Beispiel ist eine beliebte Code-Metrik außer Cyclomatic Complexity die C.R.A.P metric. Grundsätzlich definiert die C.R.A.P crappy Code als komplexe Methoden (mit hohen Cyclomatic Complexity), schlecht durch Tests abgedeckt. Die default CQLinq rule zu definieren, die C.R.A.P Metrik ist:
// <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. Verfügbare Bandbreite
- 2. Javascript Liste verfügbare Verbindungen
- 3. Projektmanagement-Software, verfügbare Optionen
- 4. Android verfügbare Mime-Typen?
- 5. MySQL - Verfügbare Daten suchen
- 6. Negieren #verfügbare Anweisung
- 7. Frei verfügbare Webdienste/APIs
- 8. net.schmizz.sshj.userauth.UserAuthException: Erschöpfte verfügbare Authentifizierungsmethoden
- 9. Verfügbare Methoden anzeigen Ruby
- 10. Verfügbare Wi-Fi-Netzwerke finden
- 11. BigQuery Abfrage erste verfügbare Spalte
- 12. Python psutil finde verfügbare Ports
- 13. Li Inline-Fill verfügbare Breite
- 14. Mapbox GL js verfügbare Symbole
- 15. OTRS + REST + Verfügbare Warteschlangen auflisten
- 16. Nicht verfügbare Sprachanalysatoren in Elasticsearch
- 17. Mac-Befehlszeile - Verfügbare serielle Ports auflisten?
- 18. Cloudera Manager Authentifizierung fehlgeschlagen: Erschöpfte verfügbare Authentifizierungsmethoden
- 19. Datenbank für verfügbare Klassenräume zum aktuellen Zeitpunkt
- 20. Cassanda, der verfügbare RAM wird maximal verwendet
- 21. Wie kann ich verfügbare Fonts in WPF
- 22. nächste verfügbare integer erhalten LINQ mit
- 23. Verfügbare Operatoren in JSF 2.0 ValueExpression
- 24. Erhalte verfügbare Sprachen für eine Anwendung
- 25. Unterstützt GQL allgemein verfügbare SQL Style-Aggregation?
- 26. Referenz, die verfügbare JavaScript-Ereignisse auflistet?
- 27. Wo finde ich Sprite Kit Verfügbare Schriftarten?
- 28. Haben Sonarqube und Whitehat eine verfügbare Integration?
- 29. Nicht verfügbare Nachricht in TestFlight Beta
- 30. Verfügbare Port für PHP-Server finden
Dies ist eine Antwort? –
Dies ist eine * angenommene * Antwort? –