Code Checker ausreizen - Electronics goes Medical 2012
 

Code Checker ausreizen - Electronics goes Medical 2012

on

  • 687 views

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 ...

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.

Statistics

Views

Total Views
687
Views on SlideShare
687
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 Code Checker ausreizen - Electronics goes Medical 2012 Presentation Transcript

  • Code-Checker ausreizen 11. Oktober 2012 Matthias Kraaz © Zühlke 2012
  • Wie kann man Software testen? Software Tests Statische Dynamische Tests Tests Statische Reviews Analyse © Zühlke 2012
  • Wie kann man Software analysieren? Statische Analyse Code- Architektur Metriken Checker Kodier- Sicherheits- Stil Anomalien regeln probleme © Zühlke 2012
  • 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
  • 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
  • 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
  • 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
  • Datenflussanalyseur-Anomalieint i; undefinedarray[i] = 1; referencedCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
  • 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
  • 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
  • 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
  • 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
  • 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
  • Dimensionsanalyse Richtig?Code-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
  • DimensionsanalyseFunktionsprinzip1. Definition des Einheitensystems EinheitCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
  • DimensionsanalyseFunktionsprinzip2. Zuordnung von Datentypen Einheit Datentyp MY_AREA_mm2 Pressure_Pa Force_mNCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
  • DimensionsanalyseFunktionsprinzip3. Zurückleitung auf Produkt der BasiseinheitenCode-Checker ausreizen | Matthias Kraaz 11. Oktober 2012 © Zühlke 2012
  • 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
  • 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
  • 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
  • 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
  • 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
  • DANKEKontakt: matthias.kraaz@zuehlke.com