MISRA
-
Hallo
Nein eher nicht, aber der Zusammenhang wirkt wie von Homer erkannt...
chrische
-
chrische5 schrieb:
Nein eher nicht, aber der Zusammenhang wirkt wie von Homer erkannt...
homer simpson, oder dieser antike poet? egal, mit logik haben's hier doch viele nicht so. wundert mich, dass dir sowas überhaupt auffällt, zumal du hättest erkennen können, dass ich hemmungslos übertreibe. wie so oft.
-
Hallo
Homer Simpson und der Stein...
chrische
-
Tim schrieb:
pointercrash() schrieb:
'mngbd schrieb:
Aber MISRA wäre was für's Forum!
Länger her, aber hatten wir schon. Mit Regel 104 gibt's meine Systick- Slots, die kooperative Eventqueue und meinen präemptiven Hardware- Handler nicht mehr.
Du würdest es halt anders implementieren. Ob das dann sicherer ist oder nicht steht auf einem anderen Blatt
Auf jeden Fall sähe es viel häßlicher aus.
Ich stopfe Funktionspointer in irgendwann auszuwertende Listen, um mal den Grundmechanismus anzudeuten. Klar brauche ich dazu non- constant function pointer. Alternativ müßte ich Tokens parsen oder sowas und das bedeutet viel Geschreibsel, um zwangsweise obfuscation im Dienste der Codesicherheit zu betreiben - das ist doch Schwachmatenkram. :p
Viele Sachen sehe ich ja ein, aber sowas ist ein "killing joke", an dem Zeug ist aber meines Wissens nichts geändert worden, wird mal wieder Zeit, ein paar Vollnullpen zum Badeurlaub zu schicken, um einen Vormittag über "Bing" und "Bong" zu diskutieren. Wird schon was Kluges dabei rauskommen.
-
Habe gerade diesen Thread gesehen
gerald1 schrieb:
Welches Programm nehmt ihr dafür?
Ein Tool von PRQA, weiss nicht, in welcher Version.
gerald1 schrieb:
Ist MISRA sinnvoll, was meint ihr?
Ja.
-
abc.w schrieb:
gerald1 schrieb:
Ist MISRA sinnvoll, was meint ihr?
Ja.
begründung?
-
gerald1 schrieb:
Ist MISRA sinnvoll, was meint ihr?
Für C mag es sinnvoll sein. Aber nicht für mehr Sprachen und auch für C nur eingeschränkt. Manche Regeln sind auch Unfug.
-
volkard schrieb:
Aber statt MISRA zu benutzen, ist es unter Umständen besser, nach C++ aufzusteigen und MISRA dort nicht zu benutzen.
c++ fehlerquellen werden von MISRA-C doch garnicht abgedeckt. wenn mich nicht alles täuscht, gibt es übrigens auch misra-regeln für c++. das sind bestimmt viele-viele mehr.
btw, c++ und aufsteigen ist ein widerspruch.
-
Bevor irgendwas falsches über MISRA geschrieben wird:
MISRA ist letztendlich eine Ansammlung von Programmierer-Regeln.
Für jemanden der noch nie mit MISRA zu tun hatte, ist das erstmal eine hohe Hürde.
Unter anderem verbietet MISRA einen frei berechenbaren Pointer zu verwenden.Meistens kommt MISRA in der Automobil-, Luftfahrt- und in der Medizintechnik zur Anwendung.
Salopp ausgedrückt, soll MISRA dafür sorgen, daß die Anforderungen von Auftraggeber und die Interpretation durch Programmierer (oder Software-Firma, ... ) eine einheitliche Grundlage haben, eben dieses MISRA.
Diese Grundlage hat ein vorrangiges Ziel: Soliden Code zu erzeugen. Und dadurch (normalerweise) zuverlässigere Produkte.Des weiteren ist es nicht unbedingt notwendig alle MISRA-Regeln einzuhalten. Denn der Auftraggeber und Programmierer können in ihrem Pflichtenheft vereinbaren, daß einige bestimmte MISRA-Regeln außer acht gelassen werden kann.
Und: MISRA ist nicht an eine bestimmte Programmiersprache wie C, C++ oder Delphi (Pascal) gebunden!
Martin
P.S.: Zum Vergleich: Wir wissen (hoffentlich) alle, warum es die VDE-Normen gibt? Eine Firma die elektrische Produkte in Deutschland inverkehrbringt, muß die geltenden VDE-Normen beachten, welche auf ihr Produkt zutreffen. Ohne diese Normen wären wir Normalverbraucher im Alltag von massig Schrott oder lebensgefährlichen Gegenständen umgeben.
-
Mmacher: gut erklärt *daumen_hoch*
aber gibts wirklich auch misra-regeln für pascal?
-
Mmacher schrieb:
Salopp ausgedrückt, soll MISRA dafür sorgen, daß die Anforderungen von Auftraggeber und die Interpretation durch Programmierer (oder Software-Firma, ... ) eine einheitliche Grundlage haben, eben dieses MISRA.
Diese Grundlage hat ein vorrangiges Ziel: Soliden Code zu erzeugen. Und dadurch (normalerweise) zuverlässigere Produkte.Ja, die Ziele sind hoch.
Des weiteren ist es nicht unbedingt notwendig alle MISRA-Regeln einzuhalten. Denn der Auftraggeber und Programmierer können in ihrem Pflichtenheft vereinbaren, daß einige bestimmte MISRA-Regeln außer acht gelassen werden kann.
Ich kann mir nicht vorstellen, daß die richtigen ausgelassen werden.
Und: MISRA ist nicht an eine bestimmte Programmiersprache wie C, C++ oder Delphi (Pascal) gebunden!
Nee, dazu gibt es ja Sachen wie MISRA-C.
continue und break sollen nicht benutzt werden.
der wert einer void-funktion darf nicht benutzt werden.
single exit.
NULL darf nicht dereferenziert werden.P.S.: Zum Vergleich: Wir wissen (hoffentlich) alle, warum es die VDE-Normen gibt? Eine Firma die elektrische Produkte in Deutschland inverkehrbringt, muß die geltenden VDE-Normen beachten, welche auf ihr Produkt zutreffen. Ohne diese Normen wären wir Normalverbraucher im Alltag von massig Schrott oder lebensgefährlichen Gegenständen umgeben.
Schlechter Vergleich.
-
volkard schrieb:
der wert einer void-funktion darf nicht benutzt werden.
das geht sowieso nicht.
-
das geht sowieso nicht.
God save the GNU
http://www.c-plusplus.net/forum/viewtopic-var-t-is-252358.html
-
mngbd schrieb:
das geht sowieso nicht.
God save the GNU
http://www.c-plusplus.net/forum/viewtopic-var-t-is-252358.htmlhihi, also gibts auch misra-regeln für verbuggte compiler.
habt ihr mal versucht, den 'output' der void-funktion zu benutzen? spätestens dabei sollte der compiler streiken.
btw, ich kann in dem forum garnicht schreiben. erhard hat wohl angst vor spam und trollerei.
-
hihi, also gibts auch misra-regeln für verbuggte compiler.
Die halten das für ein -- ich sag's besser nicht.
habt ihr mal versucht, den 'output' der void-funktion zu benutzen? spätestens dabei sollte der compiler streiken.
So ist es:
void f() { return 17; } int main(int ac, char **av) { int i = f(); return 0; }
$ gcc main.c main.c: In Funktion »f«: main.c:1: Warnung: »return« mit Wert in void zurückgebender Funktion main.c: In Funktion »main«: main.c:5: Fehler: void-Wert nicht ignoriert wie es sein sollte
Aber wenn man es nicht verwendet, kommt nur die Warnung.
btw, ich kann in dem forum garnicht schreiben. erhard hat wohl angst vor spam und trollerei.
Könnte ich eigentlich mal fragen.
-
mngbd schrieb:
main.c:5: Fehler: void-Wert nicht ignoriert wie es sein sollte[/code]
naja, das sollte doch reichen, um diese misra-regel für quatsch zu erklären (ausser man hatte dabei wirklich kaputte compiler im sinn).
-
;fricky schrieb:
naja, das sollte doch reichen, um diese misra-regel für quatsch zu erklären (ausser man hatte dabei wirklich kaputte compiler im sinn).
Da hast du eigentlich recht. Trotzdem haben wir erst heute über ein "Real-Word"-Problem gelesen, das durch eine Misra-Regel verhindert werden könnte. Seltsam, das ganze.
-
µngbd schrieb:
;fricky schrieb:
naja, das sollte doch reichen, um diese misra-regel für quatsch zu erklären (ausser man hatte dabei wirklich kaputte compiler im sinn).
Da hast du eigentlich recht. Trotzdem haben wir erst heute über ein "Real-Word"-Problem gelesen, das durch eine Misra-Regel verhindert werden könnte. Seltsam, das ganze.
Gar nicht wahr. Da war's wohl zu spät für mich, um gerade zu denken.