Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
Wenn Sie Schwierigkeiten haben, mit Ihrem Rückstand an statischen Analysewarnungen und technischen Schulden umzugehen, lesen Sie diesen Beitrag, um zu erfahren, wie Sie dieses Problem lösen können.
Zum Abschnitt springen
Nachdem statische Analysewerkzeuge in den täglichen Arbeitsablauf des Entwicklungsteams integriert wurden, wird in der nächsten Phase daran gearbeitet, den Rückstand an Warnungen und technischen Schulden in einem Projekt zu verringern.
Bei einem Produkt, das gewartet oder entwickelt wird, ist wahrscheinlich ein erheblicher Rückstand zu bewältigen. Bei einem Greenfield-Projekt gibt es weniger Rückstand. Die Empfehlungen bleiben jedoch für jede Reifestufe gleich.
Der beste Ausgangspunkt für die Bewältigung eines Rückstaus an Warnungen besteht darin, die Ergebnisse entsprechend dem gewünschten Ergebnis zu priorisieren und zu filtern. Am Beispiel der Sicherheit ist es sinnvoll, den Rückstand in Bezug auf Sicherheitswarnungen nach Kritizität zu priorisieren.
Dies ist eine Fortsetzung des Ansatzes, der bei der erstmaligen Einführung der statischen Analyse in einem Projekt verwendet wurde. Der Fokus liegt nun auf den nächsten, überschaubaren Warnungen, die das Team analysieren kann. Parasoft C/C++test geht dabei auf verschiedene Weise vor, wie wir später noch genauer erläutern werden.
Technische Schulden sind die Kosten, die durch die Verzögerung wesentlicher Arbeiten oder die Inanspruchnahme von Abkürzungen während der Softwareentwicklung entstehen. Bei dieser Form der Verschuldung fallen, wie bei Finanzschulden, mit der Zeit Zinsen an und die Behebung kann teuer werden, wenn sie nicht gelöst wird.
Beispiele für technische Schulden sind:
Leider sind technische Schulden ein häufiges Problem, da Softwareentwicklungsteams häufig der schnellen Bereitstellung von Funktionen Vorrang vor der Erstellung einer robusten Codebasis geben.
Der Abbau technischer Schulden ist aus mehreren Gründen von entscheidender Bedeutung. Es kann:
Die Lösung technischer Schulden ist für die Entwicklung nachhaltiger und wartbarer Softwareprodukte, die sich an sich ändernde Geschäfts- und Kundenanforderungen anpassen können, von entscheidender Bedeutung.
Wenn es um technische Schulden geht, gibt es zwei große Kategorien.
Absichtliche technische Schulden entstehen, wenn ein Team bewusst Abstriche macht, um eine Frist einzuhalten oder ein bestimmtes Ziel zu erreichen. Diese Art technischer Schulden entsteht häufig aus geschäftlichen Gründen, beispielsweise aufgrund des Marktdrucks, und wird als notwendiges Übel angesehen. Der Nachteil besteht darin, dass später zusätzliche Arbeiten erforderlich sein können, beispielsweise eine Umgestaltung, die kostspielig sein kann.
Andererseits entstehen unbeabsichtigte technische Schulden, wenn sich ein Team der Auswirkungen der Entscheidungen, die es während der Entwicklung trifft, nicht bewusst ist. Dies kann auf mangelndes Verständnis oder Fachwissen in einem bestimmten Bereich, mangelnde Ressourcen oder Zeit oder einfach auf mangelnde Disziplin oder Genauigkeit zurückzuführen sein.
Diese Art technischer Schulden ist oft heimtückischer, da sie schwer zu erkennen und zu diagnostizieren ist und später unvorhergesehene Folgen haben kann. Unabhängig von der Art der technischen Schulden ist es wichtig, sich ihrer Existenz bewusst zu sein und Maßnahmen zu ihrer effektiven Bewältigung zu ergreifen, um die langfristige Gesundheit und den Erfolg eines Softwareprojekts sicherzustellen.
Unbeabsichtigte technische Schulden können sich im Laufe der Zeit ansammeln, wenn sie nicht behoben werden, was letztendlich die Wartung und Weiterentwicklung der Software erschwert. Einige Beispiele für unbeabsichtigte technische Schulden sind:
Absichtlich werden technische Schulden mit der Einsicht aufgenommen, dass sie irgendwann in der Zukunft zurückgezahlt werden müssen. Einige Beispiele für absichtliche technische Schulden sind:
Die beste Vorgehensweise im Umgang mit technischen Schulden besteht darin, die Codequalität proaktiv zu managen. So können Softwareentwickler das Risiko einer übermäßigen Anhäufung technischer Schulden reduzieren und sicherstellen, dass ihre Software langfristig stabil und nachhaltig bleibt. Dies gelingt durch die Priorisierung hochwertiger Code- und Designpraktiken sowie durch den regelmäßigen Abbau technischer Schulden. Das bedeutet Investitionen in Codequalität, Tests und Dokumentation sowie die Gewährleistung, dass die Software dauerhaft wartbar, skalierbar und sicher bleibt.
Die statische Analyse ist eine automatisierte Methode zur Überprüfung des Quellcodes auf Qualitäts- und Compliance-Probleme. Dies kann nützlich sein, um Sicherheitsprobleme, Sicherheitslücken und Zuverlässigkeitsbedenken zu identifizieren oder Bereiche zu identifizieren, in denen Code in Zukunft möglicherweise schwieriger zu warten oder zu erweitern ist.
Durch die frühzeitige Erkennung technischer Schulden können Teams Maßnahmen ergreifen, um diese zu beheben, bevor sie zu einem größeren Problem werden. Dies kann dazu beitragen, die Codequalität zu verbessern, die Entwicklungszeit zu verkürzen, die Arbeitskosten zu senken und den Gesamtwert von Softwareprodukten zu steigern.
Die zentralen Berichts- und Analyse-Dashboards von Parasoft ermöglichen Entwicklern und Managern, den aktuellen Projektstatus aus verschiedenen Perspektiven zu betrachten und bei Bedarf detailliertere Informationen abzurufen, um Warnmeldungen für weitere Untersuchungen zu erstellen. Das folgende Dashboard zeigt beispielsweise die aktuelle Konformität eines Projekts mit dem CERT-C-Sicherheitscodierungsstandard.
Ein Beispiel für ein Webportal-Dashboard. In diesem Fall eine Zusammenfassung der CERT C-Konformität.
Mithilfe dieses Webportals können Benutzer tiefer in die Analyse eintauchen, bei Bedarf bis auf Datei- und Codeebene, und Warnungen vollständig im Webportal oder in einer IDE untersuchen. Warnungen können in dieser Phase priorisiert, Entwicklern zugewiesen, unterdrückt oder als falsch positiv markiert werden. Sehen Sie sich das folgende Beispiel aus dem Parasoft-Explorer an.
Der Parasoft-Verletzungs-Explorer
In den meisten Fällen werden bei der Analyse des Quellcodes zur Einhaltung von Codierungsstandards Verstöße als statische Analysewarnungen gemeldet. Bei einem großen Projekt wird es zunächst viele Warnungen geben. Ihre schnelle und effiziente Verwaltung ist von entscheidender Bedeutung. Der Verstoß-Explorer von Parasoft ist das wichtigste Tool zum Navigieren, Bewerten, Priorisieren und Zuweisen gemeldeter Fehler zur Behebung.
Erweist sich ein Verstoß gegen die statische Analyseregel als gültig, aber vertretbar, als harmlos oder nicht anwendbar, kann ein Entwickler den Fehler unterdrücken und eine Abweichung dokumentieren. Diese Abweichungen werden auf jeder Ebene des Projekts an das Dashboard und die Compliance-Dokumentation gemeldet.
Um die Einhaltung von Codierungsstandards für bestehende Projekte zu ermöglichen, ist es wichtig, dass sich die Teams zunächst auf die Regeln konzentrieren, die als verbindlich gelten. Compliance basiert häufig auf der Erfüllung der zwingenden Anforderungen bei Verstößen gegen empfohlene Regeln, sofern diese angemessen dokumentiert sind. Standards ermöglichen die Neukategorisierung von Regeln, wenn sie nicht verbindlich sind, und erlauben Verstöße, wenn sie gerechtfertigt und dokumentiert sind. Ohne dies wird der Versuch, jeden Verstoß zu korrigieren, unmöglich.
Parasoft nutzt künstliche Intelligenz (KI) und maschinelles Lernen (ML) für seine Berichts- und Analysefunktionen , um sowohl aus früheren Interaktionen mit der Codebasis als auch aus früheren statischen Analyseergebnissen zu lernen und so die Relevanz der neuen Erkenntnisse vorherzusagen und sie zu priorisieren.
Maschinelles Lernen zur Priorisierung statischer Analyseergebnisse.
Entwicklungsmanager und Führungskräfte sparen zudem wertvolle Arbeitsstunden durch eine intuitive Benutzeroberfläche, mit der sie Verstöße untersuchen und bei Bedarf automatisch Berichte für die Zertifizierung erstellen können. Ein Beispiel für einen MISRA- C-Abweichungsbericht ist unten dargestellt.
Ein Beispiel für einen Parasoft MISRA C-Abweichungsbericht
Für Teams, die statische Analysen einsetzen, ist es wichtig zu verstehen, dass nicht alle Warnungen behoben oder analysiert werden müssen. Da nicht alle Warnungen gleichwertig sind, ist der Schweregrad der beste Indikator dafür, wie viel Aufwand in die Untersuchung und Behebung einer Warnung investiert werden sollte. Bei der Abarbeitung des Warnungs-Backlogs verschieben Teams die Prioritäten für die Behebung von Warnungen mit jedem Schritt ein Stück weiter.
Parasofts Jtest und C/C++test ermöglichen es Benutzern, Warnungen innerhalb der IDE mithilfe von Konfigurationen zu priorisieren und zu filtern. Beispielsweise können sie Schweregrad und Kategorie verwenden, um eine für die Analyse geeignete Gruppe von Warnungen zu erstellen. Ein Beispiel für eine neue Benutzerkonfiguration ist unten dargestellt.
Benutzerdefinierte Testkonfigurationseinstellungen innerhalb der IDE
Mit dieser Konfiguration können die Warnungen in der IDE gefiltert werden.
Konfigurationen können in der Ansicht DTP-Ergebnisse in der IDE ausgewählt werden.
Der beste Ansatz, um einen großen Rückstand an Warnungen zu bewältigen, besteht darin, die Priorität schrittweise zu verschieben und die nächsthöhere Priorität und Kategorie anzugehen. Softwareteams erreichen irgendwann aufgrund von Zeit und Budget einen Grenzwert. Sie sollten jedoch das Gefühl haben, trotz des verbleibenden Rückstands an Warnungen deutliche Verbesserungen bei Qualität und Sicherheit erzielt zu haben.
Um technische Schulden zu vermeiden, ist ein proaktiver Ansatz erforderlich , der das gesamte Softwareentwicklungsteam einbezieht. Hier sind einige bewährte Methoden, die dabei helfen können.
Durch die Befolgung dieser Best Practices können Softwareentwicklungsteams dazu beitragen, technische Schulden zu vermeiden und sicherzustellen, dass sie sichere, zuverlässige und wartbare Softwareprodukte entwickeln.
In einem großen Projekt gibt es anfangs viele Warnungen. Deren schnelle und effiziente Bearbeitung ist entscheidend. Teams, die statische Analysen einsetzen, müssen verstehen, dass es unnötig ist, alle Warnungen zu beheben oder zu analysieren. Wählen Sie stattdessen ein Tool, mit dem Sie gemeldete Fehler navigieren, bewerten, priorisieren und zur Behebung zuweisen können. Die schrittweise Verschiebung der „Grenze“ zur nächsthöheren Priorität und Kategorie ist der beste Ansatz, um einen großen Rückstand an Warnungen zu bewältigen.
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.