Ich wollte nur wissen, was der Unterschied zwischen statischer Code-Analyse und Code-Überprüfung ist. Wie wird jeder dieser beiden gemacht? Welche Tools stehen heute für die Codeüberprüfung / statische Analyse von PHP zur Verfügung? Ich würde auch gerne gute Tools für die Codeüberprüfung für jede Sprache kennenlernen.
code-quality
terminology
code-reviews
quality
Thomas Owens
quelle
quelle
Antworten:
Codeüberprüfung ist etwas, was Menschen tun, statische Analyse ist etwas, was Maschinen tun. Es gibt (manchmal gute) statische Analysewerkzeuge. Codeüberprüfung ist, wenn ein Kollege / Mentor / Professor / Freund Ihren Code durchgeht und Sie konstruktiv kritisiert.
Die statische Analyse ist andererseits ein automatisierter Prozess, bei dem eine Maschine, die über ihre Kenntnisse über die zu analysierende Sprache informiert ist (normalerweise aus dem Typensystem), ein Programm analysiert und versucht, Dinge herauszusuchen, die falsch sein könnten. ineffizient, schlechter Stil oder auf andere Weise suboptimal.
quelle
Bei der statischen Analyse wird eine Software analysiert, ohne sie auszuführen. Dies ist sehr gut und wird empfohlen, aber Sie müssen dies berücksichtigen
Beide Ansätze leiden unter dem Mangel an Kontext: Sie wissen nicht, was der SW erreichen soll.
Die Codeüberprüfung wird von einem anderen Codierer durchgeführt, der sie angeblich kennt und überprüfen kann
Es ist viel teurer und hat einen unterschiedlichen Grad an Wiederholbarkeit, ist aber eine große Hilfe.
Wie immer gibt es keine einzige Silberkugel, die alle Fehler behebt und alle Probleme vermeidet. Anwenden - so viel wie möglich in Anbetracht des Ortes, des Codes, der Zeit, der drei Arten der Überprüfung (statisch, dynamisch, mehr Augen (und Gehirne), die den Code tatsächlich betrachten) wird empfohlen.
ps: Ich muss beachten, dass es normalerweise viel besser ist, die Werkzeuge von Grund auf neu anzuwenden. Das Konvertieren eines Legacy-Systems ist aufgrund von Fehlalarmen weniger angenehm. Wenn Sie bei Null anfangen und immer darauf abzielen, das Analysetool sauber zu halten, werden Sie wahrscheinlich viele Probleme vermeiden.
pps: Bei Tools hängt es von der Sprache ab. In der C- und C ++ - Welt können Sie zunächst Visual Studio selbst betrachten, das ein integriertes statisches Analysetool enthält. Eine relativ vollständige Liste finden Sie auf Wikipedia.
ppps: Die statische Analyse eignet sich eher für statische Sprachen wie C oder C ++. Für Python kann es sehr schwierig sein zu sagen, ob ein Name, der zu einem bestimmten Zeitpunkt auf eine Liste verweist, aufgrund seiner dynamischen Eigenschaften auf eine Liste für den Rest des Programms verweist. Dies bedeutet nicht, dass nichts getan werden kann, wie eine JIT-Anstrengung wie PyPy zeigt.
quelle
Codeüberprüfung ist, wenn ein leitender Angestellter oder eine dedizierte Behörde Ihren Code, Ihre Codierungsweise, die im Code befolgten Standards und insbesondere die Logikstufe des Codes überprüft
In Bezug auf die statische Analyse ist es die Analyse von Computersoftware, die durchgeführt wird, ohne tatsächlich Programme auszuführen, die aus dieser Software erstellt wurden (die Analyse, die beim Ausführen von Programmen durchgeführt wird, wird als dynamische Analyse bezeichnet).
Die Liste der Werkzeuge gemäß der Technologie finden Sie unter dem folgenden Link
Liste der Werkzeuge für die statische Analyse
Daher sind Codeüberprüfung und statische Analyse völlig unterschiedliche Begriffe.
quelle
Die Codeüberprüfung ist eine qualitativere Bewertung, die statische Code-Analyse eine quantitativere Bewertung.
vs, fe
Während echte Fehler (offensichtlich) existieren und von SCA erkannt werden können
quelle
Statische Analyse ist, wenn ein Artefakt analysiert wird, ohne ausgeführt zu werden. Obwohl es auf jedes Artefakt angewendet werden kann, wird es häufig auf Quellcode oder Objektcode angewendet und bezieht sich auf die Verwendung spezifischer Tools zum Analysieren und Erhalten von Informationen über diese Arbeitsprodukte. Diese Tools erstellen Berichte, die von einem Techniker zur Bestimmung der Qualität des im Bau befindlichen Systems und als Leitfaden für die Planung der Entwicklung und Wartung interpretiert werden. Wikipedia verfügt über eine Liste von Tools für die statische Analyse , die nach Sprache geordnet sind und eine kurze Beschreibung ihrer Funktionen enthalten.
Bewertungen sind eine menschliche Bewertung einiger Arbeitsprodukte, bei denen es sich möglicherweise um Code handelt. Überprüfungen können auch an Entwürfen oder anderen Dokumenten durchgeführt werden. Die Idee ist, dass andere Personen, die mit dem Arbeitsprodukt als dem Entwickler vertraut sind, es betrachten, um Fehler zu finden, die von Sicherheitsproblemen bis zu Verstößen gegen den Codierungsstandard reichen.
Technisch gesehen kann eine Codeüberprüfung als eine Form der statischen Analyse betrachtet werden, da der Code während der Überprüfung nicht tatsächlich ausgeführt wird. In der gebräuchlichen Terminologie bezieht sich "statische Analyse" jedoch normalerweise auf das maschinelle Parsen von Quell- oder Objektdateien, während "Überprüfung" anzeigt, dass Menschen die Analyse durchführen.
quelle
Die Codeüberprüfung ist eine nützliche Technik, um Probleme im Quellcode sehr früh zu riechen. Im Rahmen dieser Übung wurden viele Probleme wie Leistung, Skalierbarkeit und Codierungsstandards identifiziert und behoben. Dies verbessert die Codequalität.
Die statische Analyse wird zur Analyse von Codequalitätsmetriken wie zyklometrischer Komplexität, Wartbarkeitsindex, Vererbungstiefe und Klassenkopplungen verwendet. Verschiedene auf dem Markt verfügbare Tools zur Analyse von Codequalitäten. Der C # -Entwickler verwendet Microsoft Visual Studio zum Generieren von Metrikberichten.
quelle
Die statische Code-Analyse wird von einem automatisierten Tool durchgeführt. Die Code-Überprüfung wird mit Personen durchgeführt, bevor der Code festgeschrieben wird.
Tools zur Codeüberprüfung:
1. jenseits vergleichen
2. der Unterschied der Versionskontrollsoftware
Diese Tools werden immer verwendet, um den Unterschied zwischen der alten und der neuen Version zu generieren.
quelle