Verbesserung der Code-”Qualit¨t” durch                                               a                          statische ...
Andi Albrecht – @andialbrecht              Erster Python-Kontakt vor knapp 10 Jahren als Studentische              Hilfskr...
¨Ubersicht      QS in der Entwicklung      Statische Code-Analyse         Begriff         Probleme, Fehler, Warnungen, Info...
QS in der Entwicklung      Qualit¨tssicherung bei ProUnix            a              Prozessbegleitende QS vom Konzept bis ...
Was ist Statische Code-Analyse?              Statisches Testverfahren (ohne Programmausf¨hrung)                           ...
Was kann gefunden werden?              Syntaktische Fehler              Stilfehler, Einhaltung von Coding-Standards       ...
Tools f¨r Python-Code (Auswahl)       u                PyLint Syntax-Checks, Bad Smells, Style-Checks, Metriken          P...
Beispiel: PyLint 1    import sys 2    def mergesort(l): 3        # sort l using mergesort algorithm 4        if len(l) <= ...
Beispiel: PyFlakes 1    import sys 2    def mergesort(l): 3        # sort l using mergesort algorithm 4        if len(l) <...
Beispiel: pep8.py 1    import sys 2    def mergesort(l): 3        # sort l using mergesort algorithm 4        if len(l) <=...
Beispiel: McCabe 1    import sys 2    def mergesort(l): 3        # sort l using mergesort algorithm 4        if len(l) <= ...
Den richtigen Zeitpunkt findenQS in der Entwicklung   Statische Code-Analyse   Die Tools f¨r Python-Code                   ...
Verbesserung der Code-Qualit¨t                            a              Unmittelbare Beseitigung von Fehlern             ...
Danke!                E-Mail albrecht@prounix.de              Twitter @andialbrecht          Homepage http://andialbrecht....
Upcoming SlideShare
Loading in...5
×

Verbesserung der Code-"Qualität" durch statische Code-Analyse

2,235

Published on

Talk given at PyCon DE 2011. See http://de.pycon.org/2011/schedule/sessions/17/ for details (german).

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,235
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Verbesserung der Code-"Qualität" durch statische Code-Analyse

  1. 1. Verbesserung der Code-”Qualit¨t” durch a statische Code-Analyse Andi Albrecht ProUnix PyCon DE 2011 05. Oktober 2011QS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  2. 2. Andi Albrecht – @andialbrecht Erster Python-Kontakt vor knapp 10 Jahren als Studentische Hilfskraft bei der DFG Aktuell: Anwendungsentwickler f¨r Webapplikationen bei u ProUnix in Bonn Entwicklung und Pflege mittlerer und großer Systeme OpenSource: Rietveld Code Review Tool, python-sqlparse, CrunchyFrog, hgsvn, ...QS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  3. 3. ¨Ubersicht QS in der Entwicklung Statische Code-Analyse Begriff Probleme, Fehler, Warnungen, Infos Die Tools f¨r Python-Code u ¨ Ubersicht Ausf¨hrung und Interpretation u Integration Verbesserung der Code-Qualit¨t aQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  4. 4. QS in der Entwicklung Qualit¨tssicherung bei ProUnix a Prozessbegleitende QS vom Konzept bis zum fertigem Produkt QS in der Entwicklung ab der ersten Zeile Code (oder besser noch: als erste Zeile) Code Reviews, UnitTests, Continous Integration (BuildBot), Statische Code-AnalyseQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  5. 5. Was ist Statische Code-Analyse? Statisches Testverfahren (ohne Programmausf¨hrung) u Inspektion des Source-Codes Leicht automatisierbar, sollte auch automatisiert ausgef¨hrt u werden ¨ Regelm¨ßige Analysen, um Anderungen zwischen zwei a Durchg¨ngen zu erkennen a Umfangreiche Ausgaben (“Informationsflut”)QS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  6. 6. Was kann gefunden werden? Syntaktische Fehler Stilfehler, Einhaltung von Coding-Standards Software Metriken: LOC, Komplexit¨t, ... a “Bad Smells” ! Keine Aussagen uber Korrektheit oder Zuverl¨ssigkeit ¨ aQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  7. 7. Tools f¨r Python-Code (Auswahl) u PyLint Syntax-Checks, Bad Smells, Style-Checks, Metriken PyChecker Syntax-Checks, Bad Smells, Modul-Import erforderlich pyflakes Syntax-Checks, Bad Smells pep8 Style-Checks ”McCabe” Metriken flake8 Syntax-Checks, Bad Smells, Style-Checks, MetrikenQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  8. 8. Beispiel: PyLint 1 import sys 2 def mergesort(l): 3 # sort l using mergesort algorithm 4 if len(l) <= 1: return l 5 left_part = mergesort(l[:len(l)/2]) 6 right_part = mergesort(l[len(l)/2:]) 7 return merge(left_part, right-part) 8 9 def merge(left, right):10 """Wrong implementation of merge step."""11 return left + right C: 1,0: Missing docstring C: 2,0:mergesort: Missing docstring C: 2,14:mergesort: Invalid name "l" (should match [a-z_][a-z0-9_]{2,30}$) C: 4,20:mergesort: More than one statement on a single line E: 7,28:mergesort: Undefined variable ’right’ E: 7,34:mergesort: Undefined variable ’part’ W: 6,4:mergesort: Unused variable ’right_part’ W: 1,0: Unused import sysQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  9. 9. Beispiel: PyFlakes 1 import sys 2 def mergesort(l): 3 # sort l using mergesort algorithm 4 if len(l) <= 1: return l 5 left_part = mergesort(l[:len(l)/2]) 6 right_part = mergesort(l[len(l)/2:]) 7 return merge(left_part, right-part) 8 9 def merge(left, right):10 """Wrong implementation of merge step."""11 return left + right demo1.py:1: ’sys’ imported but unused demo1.py:7: local variable ’right_part’ is assigned to but never used demo1.py:8: undefined name ’right’ demo1.py:8: undefined name ’part’QS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  10. 10. Beispiel: pep8.py 1 import sys 2 def mergesort(l): 3 # sort l using mergesort algorithm 4 if len(l) <= 1: return l 5 left_part = mergesort(l[:len(l)/2]) 6 right_part = mergesort(l[len(l)/2:]) 7 return merge(left_part, right-part) 8 9 def merge(left, right):10 """Wrong implementation of merge step."""11 return left + right demo1.py:2:1: E302 expected 2 blank lines, found 0 demo1.py:4:19: E701 multiple statements on one line (colon) demo1.py:5:36: E225 missing whitespace around operator demo1.py:8:1: W293 blank line contains whitespaceQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  11. 11. Beispiel: McCabe 1 import sys 2 def mergesort(l): 3 # sort l using mergesort algorithm 4 if len(l) <= 1: return l 5 left_part = mergesort(l[:len(l)/2]) 6 right_part = mergesort(l[len(l)/2:]) 7 return merge(left_part, right-part) 8 9 def merge(left, right):10 """Wrong implementation of merge step."""11 return left + right 2:1: ’mergesort’ 2 *Richtwert f¨r zu hohe Komplexit¨t: 7 u aQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  12. 12. Den richtigen Zeitpunkt findenQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  13. 13. Verbesserung der Code-Qualit¨t a Unmittelbare Beseitigung von Fehlern Vermeiden von Bad Smells, unn¨tig hoher Komplexit¨t, ... o a Sauberer Code f¨hrt zu besserer Wartbarkeit u Aufzeigen m¨glicher Fehlerquellen o Schulung des Gesp¨rs f¨r problematische Stellen im Code u u Einhaltung von Standards/Konventionen ist Team-AufgabeQS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  14. 14. Danke! E-Mail albrecht@prounix.de Twitter @andialbrecht Homepage http://andialbrecht.de http://www.prounix.de/unternehmen/jobs/python/QS in der Entwicklung Statische Code-Analyse Die Tools f¨r Python-Code u Verbesserung der Code-Qualit¨t a Statische Code-Analyse / Andi Albrecht ProUnix / PyCon DE 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×