Code Checker ausreizen - Electronics goes Medical 2012

698 Aufrufe

Veröffentlicht am

Werkzeuge zur statischen Code-Analyse („Code-Checker“) werden oft nur verwendet, um die Einhaltung von MISRA-C etc. zu prüfen. Dabei werden die Anwender oftmals mit Meldungen überschüttet und selten wird ein echter Bug gefunden. Dabei unterstützen diese Werkzeuge weitere Verfahren zur Code-Analyse, die wesentlich weniger Falschmeldungen erzeugen und wesentlich mehr echte Bugs finden.
Mittels Daten- und Kontrollflussanalyse können diese Tools Bugs finden, die durch Testen vielleicht nie gefunden werden – und das mit einem Bruchteil des Aufwandes:

- Verwendung von Null-Zeigern
- Überlauf über Feldgrenzen
- Überlauf von Datentypen
- Schleifen, die manchmal nicht mehr terminieren
- konkurrierender Zugriff aus mehreren Threads ohne ausreichenden Schutz

Features wie inter-procedural analysis, value tracking und dimensional analysis werden erklärt, um die Features eines Code-Checkers besser ausschöpfen zu können.
Was lernen die Zuhörer in dem Vortrag:
Die Zuhörer lernen die Fähigkeiten moderner, mächtiger Code-Checker kennen und wie diese implementiert werden. Mit diesem Wissen können die Fähigkeiten des eigenen Code-Checkers besser ausgereizt werden oder die Auswahl eines geeigneten Code-Checkers vorgenommen werden.

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
698
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
10
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Ich möchte Ihnen eine weitere Möglichkeit zur Beschleunigung und Effizienzsteigerung Ihrer Software-Tests vorstellen.Kaufen Sie einen Code-Checker und setzen Sie alle seine Fähigkeiten nutzbringend ein.Oder vielleicht verwenden Sie schon einen Code-Checker, reizen ihn aber nicht aus?Gerade dann sitzen Sie gerade im richtigen Vortrag.
  • Die 10er Regel nach Tilo Pfeiffer
  • Prüfung auf Stil und Kodierregeln auch gut und wichtig.Aber wenn es um Bugs pro Meldung gibt, liegt die Anomalien-Suche vorn!
  • Code Checker ausreizen - Electronics goes Medical 2012

    1. 1. Code-Checker ausreizen 11. Oktober 2012 Matthias Kraaz © Zühlke 2012
    2. 2. Wie kann man Software testen? Software Tests Statische Dynamische Tests Tests Statische Reviews Analyse © Zühlke 2012
    3. 3. Wie kann man Software analysieren? Statische Analyse Code- Architektur Metriken Checker Kodier- Sicherheits- Stil Anomalien regeln probleme © Zühlke 2012
    4. 4. Später ist teurer –10er Regel nach Tilo Pfeiffer Beim Anwender x 100 Während Entwicklung x1 Während Testphase x 10Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    5. 5. Später ist teurer –Statische Analyse im V-Modell Anforderungs- Validierung spezifikation Architektur- Integrations- design tests Komponenten- Komponenten- spezifikation tests Implementierung Statische AnalyseCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    6. 6. Statisch vs. dynamisch –Fehlerzustand und FehlerwirkungFehlerzustand Fehlerwirkungresult = NULL; • a=1,b=2  „a“if(a%2){ • a=2,b=1  „b“ result="a"; • a=2,b=2  ?}if (b % 2){ result="b";}output(result);Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    7. 7. Code-Checker im Vergleich –Bugs pro MeldungFehlerzustand Bugs pro Meldungresult = NULL; • Stil: x Meldungen, 0 Bugsif(a%2){ • Kodierregeln: x Meldungen, 0 Bugs result="a"; • Anomalien: 1 Meldung, 1 Bug}if (b % 2){ result="b";}output(result);Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    8. 8. Datenflussanalyseur-Anomalieint i; undefinedarray[i] = 1; referencedCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    9. 9. Datenflussanalysedu-Anomalieint complicated(void) defined{ int result; int tmp = 0; result = tmp; tmp = 100 x T + 4; undefined return result;}Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    10. 10. Datenflussanalysedd-Anomalieint complicated(void) defined{ int tmp = 22; tmp = 100 x T + 4; return tmp;} definedCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    11. 11. KontrollflussanalyseAnomalien Unerreichbarer Code Endlos-Schleife void complicated(uint8_t i) uint8_t i; { for ( i = 0; i < 256; i++ ) if ( i >= 256 ) { { … … } } } 3 Tage FehlersucheCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    12. 12. Value Trackingvoid complicated(bool b1, bool b2, bool b3){ int a = 1; if ( b1 ) a = a + 2; if ( b2 ) a = a + 3; if ( b3 ) a = a + 4; if ( a > 10 ) { /* Dead code */ }}Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    13. 13. Interprozedurale Analysevoid complicated( int i ){ static bool array[2]; array[i] = true;} complicated( 2 ); complicated( 1 ); complicated( 0 ); complicated( 0 ); complicated( 0 ); complicated( 1 );Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    14. 14. Dimensionsanalyse Richtig?Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    15. 15. DimensionsanalyseFunktionsprinzip1. Definition des Einheitensystems EinheitCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    16. 16. DimensionsanalyseFunktionsprinzip2. Zuordnung von Datentypen Einheit Datentyp MY_AREA_mm2 Pressure_Pa Force_mNCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    17. 17. DimensionsanalyseFunktionsprinzip3. Zurückleitung auf Produkt der BasiseinheitenCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    18. 18. Das macht mein Compiler doch schon!• Datenflussanalyse: ein bisschen• Kontrollflussanalyse: ein bisschen• Value Tracking: eher nicht• Interprozedurale Analyse: eher nicht• Dimensionsanalyse: Boost.Units• Mit ausgeschalteten Warnungen: sowieso nicht!Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    19. 19. PraxisbeispielAssessment von Alt-Code• 60.000 Zeilen Code• Produkt 10+ Jahre auf dem Markt• 4 Datenflussanomalien – Variable wird ohne Initialisierung verwendet – Abhängig von mehreren Konfigurationsoptionen• Bisher unerkannt – Passte die zufällige „Initialisierung“ immer? – Kommt kritische Konfiguration nicht vor? – Wurden Fehler nicht erkannt / nicht gemeldet?Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    20. 20. Investition• Tool kaufen und in Betrieb nehmen• Entwickler schulen (buy-in!)• Meldungen aus altem Code wegschaffen• Neue Meldungen während Entwicklung untersuchenCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    21. 21. Tools am Markt• Abraxas CodeCheck• Coverity• Findbugs• Gimpel PC-Lint• Klocwork• Parasoft CodeWizard• PMD• ProgrammingResearch QA/C, QA/C++• MathWorks Polyspace• Microsoft FxCop• Splint• …Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    22. 22. Nutzen / FazitStatische Analyse auf Anomalien ist• früher einsetzbar als dynamische Tests• ergiebiger als Kodierregeln zu prüfen• eventuell mit vorhandenen Tools möglichund erleichtert die Fehlersuche.Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
    23. 23. DANKEKontakt: matthias.kraaz@zuehlke.com

    ×