Parasoft C/C++test 2022.2 unterstützt das neue MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

Eine gesunde statische Analysestrategie

Von Arthur Hicken

13. März 2017

4  min lesen

Im Rahmen meiner Serie über die 7 Gewohnheiten sehr erfolgreicher ProgrammiererHeute werde ich einige Möglichkeiten diskutieren, um sicherzustellen, dass die statische Analyse effektiv und nachhaltig ist.

Politik

Beginnen Sie am Anfang mit Ihrer statischen Analyserichtlinie. Einige Leute fragen sich, warum dies wichtig ist, aber es ist tatsächlich entscheidend für eine erfolgreiche Initiative zur statischen Analyse. Ihre Richtlinie behandelt Dinge wie die Regeln, die Sie ausführen sollten, wann Sie sie ignorieren können oder wann Sie sie korrigieren müssen, wie Unterdrückungen durchgeführt werden usw. Sie müssen auch entscheiden, welcher Code analysiert werden muss, nämlich der gesamte Legacy-Code Sie haben nur herumgesessen, worauf wir gleich eingehen werden.

Ohne eine konsistente Richtlinie verwandelt sich die statische Analyse schnell in einen gelegentlich ausgeführten Bugfinder, wodurch der Wert, den Sie daraus erhalten, verringert wird. Wenn Sie in einem Compliance-Unternehmen wie Medizin oder Automobil tätig sind, müssen Sie ohnehin statische Analysen durchführen, damit Sie es genauso gut richtig machen und einen Mehrwert erzielen können.

Werkzeugauswahl

Das richtige Werkzeug zu finden ist wichtig. Das Tool muss in Ihrem Code-Editor (IDE) mit den von Ihnen verwendeten Sprachen auf dem von Ihnen verwendeten Betriebssystem funktionieren. Das Tool sollte sowohl die Server- als auch die In-IDE-Ausführung, die In-IDE-Ausführung (für Entwickler) und die webbasierte Berichterstellung (für Manager) unterstützen. Sie müssen in der Lage sein, das Tool so zu konfigurieren, dass es genau die Regeln ausführt, die Sie möchten (nicht nur die, die der Tool-Anbieter ausführen möchte). Ausgereifte Tools werden mit sofort einsatzbereiten Startkonfigurationen geliefert, um Sie mit Brancheninitiativen wie MISRA, OWASP, CWE und PCI vertraut zu machen.

Die Möglichkeit, das Tool mit Ihren eigenen Regeln, Ideen und Best Practices zu erweitern, ist auch für Ihren langfristigen Erfolg wichtig. Und vergessen Sie nicht den technischen Support - kann sich jemand Probleme mit lauten Regeln ansehen und Ihnen helfen, diese zu beheben? Wirst du Open Source verwenden und die Korrekturen selbst vornehmen? Verwenden Sie normalerweise Anbieterservices, um Ihr Projekt schnell in die richtige Richtung zu bringen?

Dies und mehr sind bei der Auswahl eines Werkzeugs zu berücksichtigen. Fallen Sie nicht in die Backfalle - es enthält nur wenige nützliche Informationen darüber, ob ein Tool wirklich das tut, was Sie benötigen, und statische Analysetools funktionieren einfach anders.

Regelauswahl

Wie oben erwähnt, ist es einfach, in die Falle zu tappen, wenn Sie nur die Regeln des statischen Analysetools aktivieren. Einige Anbieter fördern dies aktiv, andere verlangen es sogar! Die Anforderungen an Softwaretests sind unterschiedlich. Mit einer Standardkonfiguration können Sie loslegen, aber um erfolgreich zu sein, müssen Sie sie zu Ihrer eigenen machen.

Einige Dinge, die Sie tun müssen, sind das Deaktivieren von lauten Regeln und das Anpassen des Schweregrads an Ihre eigenen tatsächlichen Praktiken (Sie möchten nicht, dass ein Tool sagt, dass etwas kritisch ist, wenn Sie glauben, dass der Schweregrad niedrig ist). Ein nicht offensichtlicher Hinweis ist, Regeln zu deaktivieren, die Sie mögen, die Sie aber heute nicht reparieren möchten. Wenn Sie Zeit haben, um die Verstöße zu beheben, aktivieren Sie die Regel, nicht vorher. Das Ignorieren, wenn sie gemeldet werden, führt nur zu Frustration und schlechten Gewohnheiten, wenn Entwickler lernen, dass nicht alle Regeln wichtig sind.

Die Regeln, die Sie ausführen, sollten sich auf Probleme beziehen, die Sie vor Ort haben, Probleme, die Sie vernünftigerweise erwarten könnten, Sicherheitsprobleme, Dinge, die während der Codeüberprüfung festgestellt wurden, und alle Konformitätselemente - Regeln, die Sie ausführen MÜSSEN.

Unterdrückungen

Selbst wenn Sie genau die richtigen Regeln haben, macht der Kontext manchmal eine bestimmte statische Analyse in einem Teil des Codes unwichtig, während sie in einem anderen Teil immer noch kritisch ist. Sie haben hier ein paar Möglichkeiten, am wenigsten wertvoll ist es, frustriert zu werden und die Regel auszuschalten. Dies ist eine schlechte Wahl, wenn Sie wissen, dass die Regel in einigen Bereichen einen Mehrwert bieten kann. Wenn Sie mit Ihrem Tool nicht richtig konfigurieren und unterdrücken können, haben Sie das falsche Tool ausgewählt. Fahren Sie mit Schritt 2 oben fort.

Eine weitere Falle, in die einige geraten, besteht darin, die Ergebnisse manuell zu verwalten und die als wichtig erachteten zu verteilen. Dies ist arbeitsintensiv, nicht skalierbar, nicht wartbar, und Sie werden am Ende weniger wichtige Dinge reparieren, während wichtigere fehlen. Sie benötigen einen datengesteuerten Prozess, mit dem Sie beurteilen können, welche Verstöße behoben werden müssen und welche sicher ignoriert werden können, und eine Möglichkeit, sie zu kennzeichnen, damit sie nicht zurückkehren. Idealerweise kann dies von Entwicklern direkt in der IDE, in der sich der Code befindet, sowie von Managern, Architekten und dergleichen in einer webbasierten Benutzeroberfläche durchgeführt werden.

Einige stellen diese Unterdrückungen in ein separates System. Dies hat den Vorteil, dass der Code niemals geändert wird, birgt jedoch das Risiko, dass Nacharbeiten erforderlich sind, wenn Sie verzweigen oder umgestalten oder wenn ein Synchronisierungsproblem vorliegt. Andere nehmen eine Änderung des Codes in Form eines speziellen Kommentars vor. Dies erfordert zwar eine Codeänderung, ist jedoch dauerhaft und genau und dokumentiert auch Unterdrückungen - was großartig ist, wenn Sie jemals geprüft werden. Denken Sie über Ihre Bedürfnisse nach und wählen Sie die Methode aus, die am besten zu Ihrer Umgebung passt. Wenn Ihr Tool nicht beide unterstützt, fahren Sie mit Schritt 2 fort.

Legacy-Code

Legacy-Code bezieht sich auf Unterdrückungen. Es ist wichtig zu entscheiden, wie Sie mit altem Code umgehen möchten. Auch dies hängt von Ihren Bedürfnissen ab, aber ich habe nachfolgend einige Methoden beschrieben.

Einige Organisationen beheben Verstöße gegen statische Analysen in Legacy-Code nur, wenn ein ausstehender Feldfehlerbericht vorliegt, der diese Codezeilen berührt. Ansonsten sollte nichts in der Datei berührt werden. Wenn Sie wirklich alten Code haben oder das Risiko einer Änderung hoch ist, ist dies eine völlig vernünftige Richtlinie. Es wird das Risiko minimieren.

Eine andere Idee ist, alles in einer Datei zu reparieren, wenn Sie dort sind. Dies birgt ein gewisses Änderungsrisiko, aber wenn Sie eine gute Unit-Test-Suite haben (wir werden das nächste Mal darüber sprechen), müssen Sie sich nicht so viele Sorgen machen. Positiv zu vermerken ist, dass jeder Code, den Sie berühren, mit den neuesten erforderlichen Codestandards und Best Practices auf dem neuesten Stand ist. Veralteter Code ist weniger veraltet als er war.

Sie können auch eine Hybridmethode ausführen oder einfach den gesamten alten Code vor einem bestimmten Datum ignorieren und in Zukunft nur die statische Analyse verwenden. Finden Sie heraus, was Sie erreichen können, und tun Sie es auf diese Weise. Denken Sie zunächst an die Risiken und Vorteile Ihrer vorgeschlagenen Strategie.

Die statische Analyse ist eines der wertvollsten Werkzeuge in Ihrem Softwarequalitäts- / Sicherheitsarsenal. Richtig zu machen bringt großen Wert mit sich, aber falsch zu machen kann eine Generation von Programmierern in Ihrem Unternehmen dazu verurteilen, alte veraltete Qualitäts- und Sicherheitsprozesse zu verwenden. Wenn Sie Fragen haben, lassen Sie es mich in den Kommentaren unten wissen. Ich freue mich immer darüber, wie die statische Analyse funktioniert.

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Von Arthur Hicken

Arthur ist seit über 25 Jahren bei Parasoft im Bereich Software-Sicherheit und Testautomatisierung tätig. Er hilft bei der Erforschung neuer Methoden und Techniken (einschließlich 5 Patente) und hilft Kunden dabei, ihre Software-Praktiken zu verbessern.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.