Frage

Was sind die Vorteile von auf dem Quellcode statische Code-Analyse zu tun? Ich war mit FxCop herumgespielt und ich frage mich, ob es irgendwelche Vorteile, die über dafür, dass Sie die Coding-Standards folgen.

War es hilfreich?

Lösung

Es gibt alle Arten von Vorteilen:

  1. Wenn es anti-Muster in Ihrem Code sind, können Sie sie gewarnt werden.
  2. Es gibt bestimmte Metriken (wie McCabe zyklomatische Komplexität) dass sagen nützliche Dinge über Quellcode.
  3. Sie können auch große Sachen wie Call-Diagramme und Klassendiagramme erhalten aus statischer Analyse. Das ist wunderbar, wenn Sie ein angreifen neue Code-Basis.

Hier finden Sie aktuelle Source

Andere Tipps

Viele Klassen von Speicherlecks und gemeinsame logischen Fehler können statisch als auch gefangen werden. Sie können auch auf zyklomatische Komplexität aussehen und solche, die Teil der „Coding-Standards“ sein können, die Sie erwähnt, kann jedoch eine separate Metrik Sie algorithmische „Sauberkeit“ des Codes zu bewerten verwenden.

In jedem Fall nur eine sinnvolle Kombination von Profilierung (dynamische oder Laufzeitanalyse) und statischer Analyse / Fusseln einer konsistente, zuverlässige Code-Basis gewährleisten. Oh, das, und ein wenig Glück; -)

Es ist ein Kompromiss. die für einen einzelnen Entwickler möchte sein Verständnis für den Rahmen und die Leitlinien zu verbessern, würde ich es auf jeden Fall fördern. FxCop erzeugt viel Lärm / False Positives, aber ich habe auch festgestellt, die folgenden Vorteile:

  • es erkennt Fehler (zum Beispiel einer Warnung über ein nicht verwendetes Argument kann darauf hindeuten, Sie das falsche Argument in der Methode Körper verwendet wird).

  • verstehen die Richtlinien FxCop folgt helfen Ihnen, ein besserer Entwickler zu werden.

Allerdings mit einem gemischten Team Fähigkeit kann FxCop erzeugen und zu viele Fehlalarme, nützlich zu sein. Junior-Entwickler werden Schwierigkeiten haben, zu schätzen, ob einige der eher esoterischen Verletzungen durch FxCop geworfen sollten sie betreffen oder sind nur Lärm.

Fazit:

  • Wenn Sie wiederverwendbare Klassenbibliotheken, wie ein Inhouse-Rahmen sind die Entwicklung, stellen Sie sicher, dass Sie gute Entwickler und verwenden FxCop.

  • Für die tägliche Anwendungsentwicklung mit Mixed-Fähigkeit Teams, wird es wahrscheinlich nicht möglich sein.

eigentlich nicht FxCop nicht besonders helfen, einen Kodierungsstandard folgen. Was es hilft Dir ist ein gut durchdachten Rahmen / API zu entwerfen. Es ist wahr, dass Teile des Codierungsstandard (wie Gehäuse der öffentlichen Mitglieder) werden von FxCop gefangen werden, aber Standards Codierung ist nicht im Mittelpunkt.

Coding-Standards können mit StyleCop überprüft werden, die den Quellcode anstelle des MSIL überprüft wie FxCop der Fall ist.

Es kann tatsächlich Fehler fangen, wie zu vergessen IDisposables zu entsorgen.

Abhängig von den Regeln, aber viele subtile Defekte vermieden werden kann, Code gereinigt werden kann, können potenzielle Leistungsprobleme usw. erfasst werden

Setzen Sie in einer anderen ... wenn es billig oder kostenlos ist (in Zeit und finanziell Kosten) und alles, was nicht brechen, warum es nicht verwenden?

FxCop

Es gibt eine Liste von alle Warnungen in FxCop . Sie können sehen, dass es Warnungen aus den folgenden Bereichen:

  

Konstruktions Warnungen

     

Warnungen, die richtige Bibliothek unterstützen   Design wie von .NET angegeben   Rahmen-Design-Richtlinien.

     

Globalisierung Warnungen

     

Warnungen, die weltweit einsetzbare unterstützen   Bibliotheken und Anwendungen.

     

Interoperabilität Warnungen

     

Warnungen, die mit Unterstützung interagieren   COM-Clients.

     

Naming Warnungen

     

Warnungen, die die Einhaltung der Unterstützung   Namenskonventionen des .NET   Rahmen-Design-Richtlinien.

     

Performance Warnungen

     

Warnungen, die hohe Leistung unterstützen   Bibliotheken und Anwendungen.

     

Sicherheitswarnungen

     

Warnungen, die sichere Bibliotheken unterstützen   und Anwendungen.

Je nach Anwendung einige dieser Bereiche möglicherweise nicht sehr interessant sein, aber wenn Sie zum Beispiel müssen COM-Interoperabilität können die Tests wirklich helfen, die Gefahren zu vermeiden.

Andere Werkzeuge

Andere statische Überprüfung Tools können Ihnen helfen, Fehler wie keine IDisposable Entsorgung , Speicherlecks und andere subtile Bugs. siehe für einen Extremfall die noch nicht veröffentlicht NStatic Werkzeug.

  

NStatic wird verwendet, um Dinge wie redundante Parameter zu verfolgen, Ausdrücke, die Konstanten, Endlosschleifen und viele andere Metriken auswerten.

Die Vorteile sind, dass Sie automatisch finden und technische Schulden quantifizieren in Ihrer Software.

I statische Code-Analyse-Tools unverzichtbar für große Unternehmen Anwendungsentwicklung finden, wo viele Entwickler und Tester kommen und das Leben von einer Anwendung durchgehen, aber die Code-Qualität muss immer noch hoch gehalten werden und die technischen Schulden ordnungsgemäß verwaltet.

Was sind die Vorteile von auf dem Quellcode statische Code-Analyse zu tun?

Die Vorteile hängen von der Art der statischen Code-Analyse, die durchgeführt wird. Statische Code-Analyse kann von einfachen bis hin zu anspruchsvollen Techniken reicht. Zum Beispiel Code-Metriken über Ihre Quelle zu erzeugen fehleranfälligen Code ist eine Technik zu identifizieren. Andere Techniken versuchen aktiv Fehler in Ihrem Code zu finden. Ausgefeilte Techniken verwenden formale Methoden zu beweisen, dass der Code frei von Fehlern ist.

Daher hängt der Nutzen von der Art der statischen Code-Analyse verwendet werden. Wenn die Technik produziert Metriken (wie die Komplexität des Codes etc.), dann ist ein Vorteil, dass diese Kennzahlen bei der Code-Überprüfung verwendet werden, um fehleranfälligen Code zu identifizieren. Wenn die Technik Fehler erkennt, dann ist der Vorteil, dass der Entwickler Bugs vor Unit-Test identifizieren kann. Wenn formale Methoden basierende Techniken verwendet werden, um zu beweisen, dass der Code keine Fehler enthält, dann ist der Vorteil, dass diese Informationen verwendet werden könnten, um die QA-Abteilung (oder Zertifizierungsstellen) zu beweisen, dass der Code frei von bestimmten Arten von Fehlern ist.

Eine detailliertere Beschreibung der Techniken und Vorteile können auch auf dieser Seite zu finden: www.mathworks.com / statisch-Analyse

Ich werde versuchen, die wichtigsten sind zu beschreiben:

  • Statische Code-Analyse identifiziert in einem frühen Stadium in dem Programm erkennt, was Verringerung der Kosten, sie zu beheben.
  • Es kann Fehler in dem Programm Ein- und Ausgängen erkennt, die nicht durch dynamische Tests gesehen werden kann.
  • Es scannt automatisch kompilierten Codes und identifiziert Schwachstellen.
  • Von dem, was ich weiß aus mit checkmarx zu tun ist, dass statische Code-Analyse mehrere Schwachstellen an einem einzigen Punkt fixiert, die für den Entwickler viel Zeit spart.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top