Beschleunigung von MISRA, CERT-Compliance mit dedizierten Reporting-Workflows
Von Miroslaw Zielinski
24. April 2019
5 min lesen
Die Einführung eines Codierungsstandards wie MISRA oder CERT in den täglichen Workflow des Entwicklers kann zeitaufwändig und aufdringlich sein. In diesem Beitrag erfahren Sie, wie Sie die Einhaltung von Tool-Automatisierung, dediziertem Reporting und Workflow-Management beschleunigen können.
Während der aktiven Softwareentwicklung besteht der typische Entwickler-Workflow aus Codierung (entweder neuer Code, Refactoring oder Korrektur vorhandenen Codes), lokalen Unit-Tests, Übermittlung von Code an die Quellcodeverwaltung, Initiieren eines CI-Builds (Continuous Integration) und Empfangen von Feedback von einem solchen Erstellen, Fehler beheben und mit der nächsten zu implementierenden Funktion fortfahren.
In diesem Beitrag werde ich beschreiben, wie ein Codierungsstandard erfolgreich in diesen täglichen Prozess eingeführt werden kann, indem automatisierte statische Analysen mit dedizierten Berichten und Workflow-Management genutzt werden. Auf diese Weise können Sie den Compliance-Prozess für Codierungsstandards und alle damit verbundenen Vorteile einführen, ohne Ihre Produktivität zu beeinträchtigen und Entwickler zu frustrieren.
Durch die dedizierte Einhaltung und Berichterstattung der Codierungsstandards können Sie außerdem Folgendes sicherstellen:
- Die Effektivität des Prozesses (Verringerung der Belastung der Entwickler)
- Konsistenz in der Richtlinie (und Überwachung des Teamfortschritts)
- Formale Aspekte der Konformität (einschließlich der automatischen Erstellung der Konformitätsdokumentation, die möglicherweise von Ihrem Auftragnehmer oder der Zertifizierungsstelle verlangt wird)
Also fangen wir an! Wir beginnen am Anfang mit der Testkonfiguration.
Definieren Sie die Testkonfiguration
Wenn Sie die statische Analyse in den Workflow übernehmen, definieren Sie zunächst die Konfiguration der für Ihr Projekt relevanten Prüfer für die statische Codeanalyse. Ein Teamleiter, Architekt oder Beauftragter für funktionale Sicherheit sollte die Testkonfiguration mit einer Sammlung statischer Analyseprüfer definieren, um den Codierungsstandard durchzusetzen. Dies kann ein einmaliger Prozess oder eine sich wiederholende Aktion während der gesamten Projektlaufzeit sein.
Wenn Sie nicht extern verpflichtet sind, einem bestimmten Codierungsstandard zu folgen, empfehlen wir dennoch, einen primären Standard auszuwählen, dem Sie folgen möchten, z CERT or MISRAund es um zusätzliche Richtlinien aus anderen Standards zu erweitern, die für unsere Entwicklung wertvoll sein können. Wir sehen normalerweise, dass unser Benutzer, der sich auf MISRA C 2012 verlässt, ausgewählte CERT C-Richtlinien in den Prozess einbezieht und umgekehrt.
Veröffentlichen Sie die Testkonfiguration in der IDE
Sobald die Testkonfiguration vorbereitet ist, wird sie automatisch allen Teammitgliedern direkt in ihren IDEs zur kontinuierlichen Verwendung während der Softwareentwicklung zur Verfügung gestellt.
Dieser Punkt im Workflow ist entscheidend, um den Compliance-Prozess zu beschleunigen und die Vorteile der frühzeitigen Erkennung von Fehlern und Sicherheitslücken bei der automatisierten statischen Analyse zu nutzen. Entwickler scannen ihren Code unmittelbar nach seiner Erstellung nahezu augenblicklich. Nach unseren Beobachtungen reichen Verzögerungen von 10 bis 20 Minuten bei der Bereitstellung der Compliance-Scan-Ergebnisse aus, damit Entwickler den Fokus verlieren und mit anderen Arbeiten fortfahren können.
Code für zusätzliches Compliance-Scannen einchecken
Im nächsten Schritt checken Entwickler ihren Code ein, wodurch der CI-Build ausgelöst wird und ein zusätzlicher Compliance-Scan durchgeführt wird.
(Die Fragen stellen sich häufig, wenn es sinnvoll ist, statische Analyse-Scans als Gate für das Einchecken von Code einzurichten, damit das Einchecken von nicht konformem Quellcode abgelehnt wird. Nach unserer Erfahrung funktioniert dies nicht gut. Entwickler sind leicht zu erreichen Frustriert von abgelehnten Commits und Teamwork kann behindert werden, während abhängige Codeteile nicht rechtzeitig integriert werden. Ein besserer Workflow blockiert keine Code-Check-Ins, sondern geht davon aus, dass Verstöße, die es in das Quell-Repository schaffen, abgefangen werden die CI-Ebene.)
Während des CI-Builds wird ein vollständiger Scan des Quell-Repositorys durchgeführt. Warum einen zusätzlichen Scan durchführen, wenn der Code bereits in der IDE gescannt wurde? Scans auf Integrationsebene bieten ein Sicherheitsnetz, das erforderlich ist, da einige Richtlinien nur auf Systemebene erkennbar sind oder ein Verstoß einfach übersehen wird. Für eine komplexere statische Analyse (Flussanalyse) ist außerdem eine vollständige Systemansicht der Quelle erforderlich, um Fehler und Sicherheitslücken zu erkennen.
Die Kombination von lokalen Scans in Benutzer-IDEs und zentralen Scans in CI-Servern gewährleistet Genauigkeit und Effizienz.
Ergebnisse anzeigen und Aktionen festlegen
Bei Verwendung des Parasoft C / C ++ - Tests werden die Ergebnisse des CI-Scans in einem zentralen Hub für Berichterstellung und Analyse veröffentlicht, auf den in einem Webbrowser zugegriffen wird, in dem die Daten gespeichert und analysiert werden.
Teamleiter können über das Webportal auf die Ergebnisse zugreifen, den aktuellen Konformitätsstatus verstehen und einen Drilldown zu bestimmten Problembereichen durchführen. Anschließend können sie den Entwicklern Aufgaben zuweisen, um die während der Analyse festgestellten Verstöße zu verfolgen.
Probleme lösen
Entwickler beheben diese Probleme, scannen den Code lokal und führen Korrekturen durch, wodurch ein weiterer Zyklus eingeleitet wird.
Berichte und Dokumentation erstellen
Wenn das Projekt kurz vor dem Abschluss steht und das Team seinem Compliance-Ziel nahe ist, werden automatisch Compliance-Berichte erstellt, einschließlich aller Dokumente, die für den verwendeten primären Codierungsstandard erforderlich sind. Diese speziellen, standardspezifischen Berichte sparen viel Zeit und reduzieren den Aufwand für mühsame manuelle Arbeit im Zusammenhang mit der Erstellung und Pflege der Compliance-Dokumentation.
Beispiele dafür, wie dies für MISRA und CERT aussieht, finden Sie unten.
Compliance-Berichterstattung für MISRA
Der Parasoft C / C ++ - Test bietet dedizierte Berichte zur Dokumentation der Einhaltung von MISRA C. Ein Dashboard im Parasoft-Webportal bietet auf einen Blick einen Überblick über den aktuellen Status des Projekts, wie hier:
Jedes dieser Dashboard-Widgets kann mit einer detaillierteren Ansicht verknüpft werden, die detaillierte Berichte zu Verstößen, Dateien und Quellcode enthält.
Von hier aus können Sie automatisch die Berichte erstellen, die zur Dokumentation der MISRA-Konformität erforderlich sind, wie in MISRA-Konformität 2016: Erreichen der Konformität mit den MISRA-Codierungsrichtlinien beschrieben. Die Automatisierung dieser Berichte spart viel Zeit und reduziert den manuellen Aufwand für die Dokumentation der Projektkonformität erheblich.
Compliance-Berichterstattung für SEI CERT C.
Obwohl für den SEI CERT C-Standard keine spezifischen Konformitätsberichte erforderlich sind, muss ein Projekt die Konformität mit den Regelsätzen dokumentieren (z. B. L1, L2 und vollständig konform). Der Parasoft C / C ++ - Test enthält ein spezielles Dashboard für die CERT C-Konformität , das sieht so aus:
Teamleiter können diese Dashboard-Ansicht verwenden, um sich eingehender mit bestimmten Problembereichen zu befassen und Entwicklern Aufgaben zuzuweisen, um die Compliance im Laufe der Zeit zu verbessern. Das Betrachten der Ergebnisse im Kontext des vom Kodierungsstandard selbst verwendeten Risikobewertungsrahmens (z. B. das Feststellen spezifischer Verstöße gegen die L1-Richtlinien) rationalisiert den Prozess erheblich. Durch die Automatisierung dieser Berichterstellung wird der Analyseaufwand reduziert, den Teamleiter und Architekten durchführen müssen, um die CERT C-Konformität zu erreichen.
Zusammenfassung
Um die Compliance zu beschleunigen, sind drei Elemente unerlässlich: Zentrales Management von Compliance-Richtlinien, kurze Feedback-Schleifen für Entwickler, die mit IDEs arbeiten, und CI / CD-Scans für das Prozessmanagement und die Berichterstellung. Die Automatisierung durch statische Analyse ist der Schlüssel, um nicht nur die Einhaltung des Regelsatzes zu erreichen, sondern auch den manuellen Aufwand für die Dokumentation und Berichterstattung an Prüfer und Prüfer zu verringern. Durch die Nutzung entwicklerorientierter Workflows mithilfe des Parasoft C / C ++ - Tests können Teams die Compliance täglich effizient bewerten und überwachen. Mithilfe dedizierter Berichterstellungstools können Teamleiter die Compliance verwalten und erreichen.
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.