Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Statische Code-Analyse

Statische Code-Analyse

Vortrag zum 2. Meetup 2016 der PHP USERGROUP Dresden.

move:elevator

May 20, 2016
Tweet

More Decks by move:elevator

Other Decks in Technology

Transcript

  1. Statische Code-Analyse Warum? Potentielle Fehler vermeiden: Komplexen und anfälligen
 Code

    finden. Wichtigen Code finden: Wissen wo die (wirtschaftlich-) kritischen 
 Stellen meiner Applikation sind. Design-Fehler aufzeigen : Abhängigkeiten erkennen und Verstöße
 gegen Best-Practices finden.
  2. Statische Code-Analyse Was kann ich damit nicht? Inhaltliche Fehler aufdecken:

    Kein Ersatz für menschliche
 Reviews und ggf. manuelle Tests. Sicher sein: Metriken können geschönt und auch nicht 
 aussagekräftig sein.
  3. Coding-Standards Einarbeitung minimieren: Wiedererkennbarer und 
 leserlicher Quellcode. Warum Coding-Standards

    verwenden? Wartbarkeit erhöhen: Gut leserlicher Quellcode ist in der
 Regel auch wartbarer.
  4. Mess Detection Einhaltung von Best-Practices: Bekannte Verfahren und Abläufe
 sicherstellen.

    Warum Code auf Regeln prüfen? Code-Qualität gewährleisten: 
 Projektübergreifend gleichbleibende Code-Qualität.
  5. phploc Projektgröße analysieren: Anzeige diverser Messdaten. Was kann ich damit

    tun? Ersten Eindruck gewinnen: Übersicht über Struktur 
 und Code erhalten.
  6. PDepend Metriken generieren: Metriken für CodeRank, Efferent Coupling
 u.a. erstellen.

    Übersicht visualisieren: Erstellung einer Overview Pyramid 
 sowie Abstraction Instability Charts möglich. Was kann ich damit tun?
  7. PHPCPD Duplizierten Code finden: Wo wurde Code 1:1 oder anteilig

    in Prozent
 kopiert und nicht ausgelagert. Was kann ich damit tun?
  8. QualityAnalyzer Was kann ich damit machen? Visualisierung: Übersichtliche Visualisierung anhand

    der 
 generierten Metriken. Schnellen Einblick gewinnen: Wo sind komplexe 
 Klassen und Methoden? Wo sind Violations?

  9. PHP-CS-Fixer Alternative zur manuellen Anpassung: Optimal um in 
 Legacy-Applikationen

    Coding-Standards einzuführen. Welchen Mehrwert habe ich davon? Extrem konfigurierbar: Mehr als 20 vordefinierte Fixer (Regel-Klassen)
 bereits vorhanden. Automatisierbar für CI’s: Die Konfiguration kann in einer speziellen
 .php_cs Datei hinterlegt und automatisiert geprüft werden.
  10. security-advisories Sicherheitsüberprüfung: Prüfung der eingesetzten Libraries, 
 Bundles oder Components

    auf bekannte Sicherheitslücken. Was kann ich damit tun? Verbreitung von Schadcode verhindern: 
 Schützt eure Projekte indem ihr dies als Pflicht-Prüfung 
 bei jedem Deployment forciert.
  11. /** * This will suppress all the PMD warnings in

    * this class. * * @SuppressWarnings(PHPMD) */
  12. /** * This will suppress UnusedLocalVariable * warnings in this

    method * * @SuppressWarnings(PHPMD.UnusedLocalVariable) */
  13. Cyclomatic Complexity (CCN): Anzahl der Verzweigungen. NPath Complexity: Anzahl der

    Ausführungspfade. Kurz und knapp: Zählt pro Methode die 
 „Entscheidungs-Verzweigungen“ (Decision-Trees) • function • for(each) • while • if • case
  14. Deptrac Prüfung von definierten Regeln: Überprüfung von 
 Objekt-Abhängigkeiten über

    verschiedene Bereiche. (Layern) Worum geht es? Visualisierbar: Eine Bildgenerierung der Verbindungen 
 via graphviz ist möglich. Frei definier- und erweiterbar: Freie Definition von Bereichen sowie
 deren Verbindungen möglich.