advertisement

MISRA-C 2012 (ESE-Kongress 2013)

50 %
50 %
advertisement
Information about MISRA-C 2012 (ESE-Kongress 2013)
Technology

Published on February 5, 2014

Author: Zuehlke

Source: slideshare.net

Description

Mehr dazu in meinem Blogbeitrag http://bit.ly/MISRA_C.
MISRA-C schützt vor Pannen beim Programmieren in C. Der Standard ist Anfang 2013 aktualisiert worden. Was bringt die neue Version?
Der MISRA-C Standard bündelt in Summe die Erfahrung vieler hundert Jahre Programmiererfahrung mit C. Die aktuelle Version MISRA-C:2012 besteht aus 16 Direktiven und 143 Regeln auf insgesamt 236 Seiten. Noch ist allerdings größtenteils der Vorgänger MISRA-C:2004 in Gebrauch, teilweise sogar die noch ältere Version MISRA-C:1998.
advertisement

MISRA-C:2012 Matthias Kraaz

Können Sie C? printf("%d", 4 + 1 % 5); /* Ausgabe: 5 */ uint32_t a = 1; int32_t b = -1; if(a < b) { printf("Ups"); } /* Ausgabe: Ups */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 2 © Zühlke 2013

Können Sie C? printf("%d %d", i++, i); /* Unspezifiziert: 0 0 oder 0 1 */ int a = 128; printf("%d", a + a); /* Plattformabhängig: 0 oder 256 */ printf("%d", 1 << -1); /* Undefiniert: Absturz, EEPROM löschen, gar nichts */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 3 © Zühlke 2013

Können Sie C? int x = 2; int flag = 0; switch(x) { case 1: if(flag) { case 2: printf("Ups"); } break; } /* Ausgabe: Ups */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 4 © Zühlke 2013

Probleme von C • Verwirrend kompliziert • Teilweise unspezifiziert – Compiler reagiert „flexibel“ • Teilweise plattformabhängig • Teilweise undefiniert – Absturz oder irgendwas anderes MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 5 © Zühlke 2013

MISRA-C:2012 • Programmierrichtlinie für C90 und C99 • Veröffentlichung März 2013 • Vorgänger: MISRA-C:1998, MISRA-C:2004 • 16 Direktiven, 143 Regeln, 236 Seiten MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 6 © Zühlke 2013

16 Direktiven • Plattform-Spezifika verstanden und dokumentiert • Traceability auf Anforderungen • Defensive Programmierung • Fehlercodes abtesten • Lieber Funktionen statt Makros • Gut lesbare Bezeichner • Keine dynamische Speicherverwaltung • … MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 7 © Zühlke 2013

143 Regeln •A standard C environment • Unused Code • Comments • Character sets • Expressions • Side effects • Control statement expressions • Control flow • Switch statements • Identifiers • Functions • Types • Pointers and arrays • Literals and constants • Overlapping storage • Preprocessing directives • Standard Libraries • Declarations and definitions • Initialization • Resources • Pointer type conversions • … MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 8 © Zühlke 2013

Was meint MISRA-C dazu? printf("%d", 4 + 1 % 5); /* Regel 12.1: Reihenfolge mit Klammern verdeutlichen! */ uint32_t a = 1; int32_t b = -1; if(a < b) { printf("Ups"); } /* Regeln 10.x: Keine implizite Konvertierung zwischen signed und unsigned! */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 9 © Zühlke 2013

Was meint MISRA-C dazu? printf("%d %d", i++, i); /* Regel 13.2: Keine unspezifizierten Ergebnisse! */ int a = 128; printf("%d", a + a); /* Direktive 4.6: Basistypen nicht direkt verwenden! */ printf("%d", 1 << -1); /* Keine Bitoperationen auf Typen mit Vorzeichen! */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 10 © Zühlke 2013

Was meint MISRA-C dazu? int x = 2; int flag = 0; switch(x) { case 1: if(flag) { case 2: printf("Ups"); } break; } /* Kapitel Switch Statements: so nicht! */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 11 © Zühlke 2013

Änderungen gegenüber MISRA-C:2004 • Endlich auch C99 unterstützt • Präziser formuliert • Besser automatisiert prüfbar • Kaum Änderung des Umfangs • Kaum Änderung der Intention der Regeln MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 12 © Zühlke 2013

„Funktionen statt Makros“ Alt (MISRA-C:2004) • Automatisierte Prüfung: Anwarnung aller Makros mit Parametern • Folge: Gewohnheitsmäßiges Ignorieren Neu (MISRA-C:2012) • Manuelle Prüfung durch Review • Fallweise Diskussion • Sinnvolle Maßnahmen MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 13 © Zühlke 2013

„Fehlercodes abtesten“ Alt (MISRA-C:2004) • Automatisierte Prüfung: Anwarnung aller nicht verwendeten Rückgabewerte • Folge: Gewohnheitsmäßiges Ignorieren Neu (MISRA-C:2012) • Direktive „Fehlercodes abtesten“ • Regel „Rückgabewerte verwenden oder auf (void) casten“ • Bisherige Implementation abgesegnet, Aufgabe für Review herausgetrennt MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 14 © Zühlke 2013

Klammerung – Alt (MISRA-C:2004) Rule 12.1 (advisory): Limited dependence should be placed on C’s operator precedence rules in expressions In addition to the use of parentheses to override… However, do not add too many parentheses so as to clutter the code and make it unreadable… A + B + C /* OK */ A + B - C /* Eher Warnung */ A + B / C /* Warnung */ A – B – C /* Je nach Prüfwerkzeug */ A + (B + C) /* Je nach Prüfwerkzeug */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 15 © Zühlke 2013

Klammerung – Neu (MISRA-C:2012) Rule 12.1 The precedence of operators within expressions should be made explicit Category Advisory Analysis Decidable, Single Translation Unit Applies to C90, C99 Amplification haarkleine, exakte Spezifikation Rationale ausführliche Erklärung Examples viele Beispiele A + B + C /* OK */ A + B - C /* OK */ A + B / C /* Warnung */ A – B – C /* OK */ A + (B + C) /* OK */ MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 16 © Zühlke 2013

„Kein unerreichbarer Code“ Alt (MISRA-C:2004) • Regel: Kein unerreichbarer Code (½ Seite) • Sehr uneinheitliche Umsetzung Neu (MISRA-C:2012) • Regel: Kein unerreichbarer Code (2 Seiten) • Regel: Kein toter Code (1½ Seiten) • Regel: Keine unbenutzten Typen, Tags, Makros, Labels, Parameter (2 Seiten) MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 17 © Zühlke 2013

„Kein goto“ Alt (MISRA-C:2004) • Regel: Kein goto • Wunderbar prüfbar • Folge: Manchmal wurde goto trotzdem verwendet Neu (MISRA-C:2012) • Regel: Kein goto • Zusätzliche Regeln: Folgende gotos nicht… • Schutz gegen besonders schlechte gotos, auch wenn vollständiges Verbot von goto ignoriert wird MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 18 © Zühlke 2013

War Story • Int. Konzern wechselt von Prüfwerkzeug A auf B • Pilotprojekt mit ~ 100.000 Zeilen Code • Plötzlich ~ 5.000 Warnungen • A kann nicht alle MISRA-C:2004 Regeln • B kann nicht alle MISRA-C:2004 Regeln, aber andere MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 19 © Zühlke 2013

Erwartung Illusion Hoffnung • Harmonisierung der Ergebnisse verschiedener Prüfwerkzeuge • Implementation aller Regeln wird zum Standard • Weniger Aufwand für Konformität – weniger überraschende Warnungen – bessere Verständlichkeit der Regeln • Weniger Aufwand für Schulung • Prüfwerkzeuge besser austauschbar MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 20 © Zühlke 2013

Prüfwerkzeuge für MISRA-C:2012 • LDRArules von LDRA • QA-C von Programming Research • PC-lint von Gimpel • Klocwork: bald • Weitere? MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 21 © Zühlke 2013

MISRA-C:2012 – Ihr Nutzen • Wirksam gegen Bugs Gegenüber MISRA-C:2004 (langfristig): • Aufwand für Konformität reduziert • Wechsel des Prüfwerkzeugs erleichtert MISRA-C:2012 | Matthias Kraaz 3. Dezember 2013 Folie 22 © Zühlke 2013

Fragen? Kommentare? Meinungen? Vernetzen Sie sich mit mir. Matthias Kraaz

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Embedded Software Engineering Kongress

Kongress 2013; Kongress 2012; Kongress 2011; Kongress 2010; Kongress 2009; DOWNLOADS MEDIATHEK ENGLISH ... Der ESE Kongress ...
Read more

MISRA-C:2012 kennenlernen ( Vortrag ) - 2013.ese-kongress.de

Zielgruppe Entwicklung Themenbereiche Implementierung, Test & Qualitätssicherung, Sichere Software Kurzfassung. Selbst Entwickler mit langjähriger ...
Read more

Embedded Software Engineering Kongress - 2013.ese-kongress.de

Kongress 2012; Kongress 2011; Kongress 2010; ... Programm ESE Kongress 2013 . 1. Tag | Montag, 2. ... Dezember 2013 | Vortragsreihen . 08:45 ...
Read more

Fünf Tage Embedded Infobroschüre ... - ese-kongress.de

... www.ese-kongress.de ... Sie zum ESE Kongress 2013 zu begrüßen und hoffen, Sie ... 09:45 – 10:25 MISRA-C:2012 kennenlernen
Read more

2014.ese-kongress.de - Embedded Software Engineering Kongress

Kongress 2013; Kongress 2012; Kongress 2011; Kongress 2010; ... "Der ESE Kongress hat sich über die Jahre hinweg zum wichtigsten Kongress der Embedded ...
Read more

MISRA DAY 2013

Der MISRA DAY 2013 richtet sich an ... Im Fokus stand der neue Standard „MISRA C:2012 ... Copyright 2016 MISRA and MISRA C are registered ...
Read more

2012.ese-kongress.de - Embedded Software Engineering Kongress

... Das war der ESE Kongress 2011; Fotogalerie 2011; ... Der ESE Kongress 2012. ... Termin und Veranstaltungsort 2013. 02. bis 06.
Read more

MISRA Web site > News

This set of files is intended to illustrate issues addressed by the MISRA C rules as expressed in MISRA C:2012 ... 2013. MISRA C:2012 ...
Read more

MISRA Web site > Publications

MISRA publications . MISRA C:2012 - Addendum 2: Coverage of MISRA C:2012 against ISO/IEC TS 17961:2013 "C Secure", ISBN 978-906400-15-6 (PDF), April 2016.
Read more