Was ist neu in PVS-Studio im Jahr 2021?

Was ist neu in PVS-Studio im Jahr 2021?

2021 neigt sich dem Ende zu, was bedeutet, dass es an der Zeit ist, das Jahr zusammenzufassen! Heute erzählen wir Ihnen von den neuen Funktionen, die wir PVS-Studio im vergangenen Jahr hinzugefügt haben. Anschnallen und los geht's!

Wir beginnen damit, in die Vergangenheit zurückzukehren. Damit hast du nicht gerechnet, oder? Trotzdem haben wir an diesem Tag vor 15 Jahren die erste Version unseres Analysators veröffentlicht – Viva64 1.00. Ja, vor 15 Jahren gab es kein PVS-Studio, keine C#- und Java-Analyzer. Auch damals noch keine allgemeine Analysediagnostik! :)

Sie können das Webarchiv verwenden, um unsere Website dieser Jahre anzusehen:

Seitdem ist viel passiert. Das Produkt hat sich aktiv weiterentwickelt und das Unternehmen ist gewachsen. Um mehr über die Geschichte des PVS-Studios zu erfahren, schauen Sie sich diese Seite an und lesen Sie den folgenden Artikel:"PVS-Studio-Projekt - 10 Jahre Misserfolge und Erfolge".

Anmerkung von Sergey Vasiliev . Bis ich mir den Titel und das Veröffentlichungsdatum des oben erwähnten Artikels angesehen habe, war ich mir sicher, dass wir ihn gerade geschrieben haben. Inzwischen sind 5 Jahre vergangen... Andrey, es ist Zeit, einen neuen Artikel zu schreiben. :)

Aber es ist Zeit, zu unserem Hauptthema zurückzukehren und einen Blick auf die neuen Funktionen zu werfen, die PVS-Studio im Jahr 2021 erhalten hat! Beginnen wir mit allgemeinen Verbesserungen, die nicht an eine bestimmte Sprache gebunden sind. Sprachspezifische Dinge finden Sie in Abschnitten über C, C++ und C#.

Website-Aktualisierung

Da wir über Websites sprechen. Wenn Sie unsere Website von Zeit zu Zeit besuchen, ist Ihnen sicherlich aufgefallen, dass wir sie komplett neu gestaltet haben. Außerdem sind wir endlich auf die Domain pvs-studio.com umgezogen. Wir haben die Benutzerfreundlichkeit der Website erhöht:Die Artikel haben jetzt Vorlieben/Abneigungen, die Dokumentation hat jetzt das Dropdown-Menü und vieles mehr. Hier können Sie alles nachlesen.

Sicherheit

Wir entwickeln PVS-Studio als SAST-Lösung (Static Application Security Testing) weiter und haben 2021 viel Zeit und Mühe darauf verwendet.

Zuerst haben wir neue Diagnosegruppen hinzugefügt, die OWASP ASVS (C++, C#, Java) und AUTOSAR entsprechen. Die vollständige Liste der Diagnosefunktionen von PVS-Studio können Sie hier einsehen.

Zweitens haben wir den Berichten des Analysators Informationen über Sicherheitskennungen hinzugefügt. Früher konnten Sie die CWE- und MISRA-Identifikatoren sehen, jetzt haben wir auch OWASP ASVS, SEI CERT und AUTOSAR hinzugefügt. Diese Kennungen sind in PVS-Studio-Plugins für IDEs, in Konvertierungsdienstprogrammen (z. B. PlogConverter) und in SonarQube als Tags für Probleme verfügbar.

Im Plug-in für Visual Studio sehen Sicherheits-IDs folgendermaßen aus (das folgende Beispiel zeigt CWE und OWASP ASVS):

Drittens haben wir die Tabellen der PVS-Studio-Diagnosekonformität mit verschiedenen Standards aktualisiert:

  • CWE;
  • OWASP Application Security Verification Standard;
  • SEI CERT Kodierungsstandard;
  • MISRA C, MISRA C++;
  • AUTOSAR C++14-Codierungsrichtlinien.

Sie können sie verwenden, um schnell die diagnostische Übereinstimmung des PVS-Studios mit den Regeln des gewünschten Standards zu überprüfen.

Außerdem haben wir die Einhaltung von OWASP Top 10 und CWE Top 25 hinzugefügt:

  • OWASP Top 10 der Sicherheitsrisiken für Webanwendungen;
  • CWE Top 25 der gefährlichsten Softwareschwächen.

Wir beschreiben die Arbeit an Sicherheit/Sicherheit für jede der Sprachen in den entsprechenden Abschnitten.

Visual Studio 2022-Unterstützung

Anfang 2021 kündigte Microsoft Visual Studio 2022 an. Sie versprachen viele Funktionen, aber die wichtigste – die IDE wäre 64-Bit.

Es stand außer Frage, ob wir Visual Studio 2022 unterstützen sollten – natürlich würden wir es unterstützen. Je näher die Veröffentlichung von VS2022 rückte, desto mehr Leute fragten außerdem, ob wir ein Plugin für diese IDE hätten.

Schließlich haben wir Visual Studio 2022 in der Dezember-Version von PVS-Studio unterstützt. Diese Version kam der Version dieser IDE am nächsten.

Anzeige der besten Warnungen des Analysegeräts

Wenn Benutzer zum ersten Mal einen statischen Analysator ausführen, werden sie möglicherweise auf eine große Anzahl von Warnungen stoßen. Dies gilt insbesondere für Projekte mit viel Legacy-Code.

Und hier kann die Person, die sich gerade mit dem Analysator vertraut macht, in mehrere Fallen tappen. Sie können beispielsweise:

  • Schalten Sie alle Warngruppen aller Ebenen ein und lassen Sie sich von der möglichen Anzahl von Warnungen abschrecken;
  • sehen Sie ein Dutzend Warnungen durch, stoßen Sie auf meist falsch positive Ergebnisse und lassen Sie sich entmutigen.

Und wir möchten, dass die Benutzer den leckersten Teil sehen – Warnungen, die sie sagen lassen:„Hm, hier stimmt definitiv etwas mit dem Code nicht“. Nun, jetzt hat PVS-Studio einen solchen Mechanismus. Sie klicken auf eine spezielle Schaltfläche und sehen die besten Warnungen aus dem Protokoll des Analysators – die Warnungen, die am wahrscheinlichsten auf einen Fehler hinweisen.

Ab sofort ist diese Funktion nur im Visual Studio-Plugin verfügbar. In Zukunft beabsichtigen wir jedoch, den besten Warnmechanismus in Plugins für andere IDEs zu integrieren.

Benachrichtigungen über Warnungen für neuen Code

PVS-Studio verfügt über das Dienstprogramm "blade-notifier", das Entwickler und Manager über Warnungen benachrichtigt, die vom Analysator ausgegeben werden. Die Verwendung von Schuldzuweisungen in CI, kombiniert mit regelmäßiger Analyse, ermöglicht es Entwicklern, Warnungen, die sie möglicherweise übersehen haben, schnell zu sehen, und Managern, die Gesamtsituation zu überwachen.

Schuld-Notifier hat dieses Jahr ein wichtiges Update erhalten. Jetzt ermöglicht das Tool, nur neue Warnungen zu verarbeiten, die für neuen Code ausgegeben wurden. Außerdem enthält der Bericht selbst jetzt mehr Informationen – das Datum der Codeänderung, für die die Warnung ausgegeben wurde, und die Revisionsnummer.

Sie geben die Anzahl der Tage an, die dem aktuellen Utility-Lauf vorausgehen. Wenn der Code älter als die angegebenen Tage ist, werden die für den Code ausgegebenen Warnungen von der Liste ausgeschlossen.

Warum ist dieses Update so wichtig? Es ermöglicht, sich speziell auf die neuen Analysator-Warnungen zu konzentrieren und ein leichteres Analogon zu SonarQubes „Clean as You Code“ zu haben. Wenn Sie SonarQube nicht konfigurieren können oder wollen, aber eine ähnliche Funktion haben möchten, haben Sie sie jetzt. Hier können Sie mehr über den Modus, seine Geschichte und seine Arbeitsmechanik lesen.

Java

Leider hat der Java-Analyzer keine größeren Updates außer SAST-Identifikatoren und Diagnosen von OWASP ASVS. :(

Wir haben die Entwicklung vorerst pausiert. Wir suchen nach Ideen in diese Richtung. Wenn Sie Vorschläge zur Funktionalität des Analysators haben, teilen Sie sie uns mit!

Trotzdem unterstützen wir weiterhin den Java-Analyzer und beheben mögliche Fehler.

C, C++

Intermodulare Analyse

Jetzt unterstützt der C++-Analyzer die intermodulare Analyse. In diesem Modus berücksichtigt der Analysator beim Analysieren von Code Informationen über Funktionen, die in anderen Übersetzungseinheiten definiert sind.

Bei der intermodularen Analyse lernt der Analysator die Informationen über die vollständige Projektstruktur. Dadurch wird die Analyse genauer und qualitativer. Dies ist der Link Time Optimization (LTO) sehr ähnlich. So kann der Analysator das Verhalten einer externen Funktion aus einer anderen Projektdatei lernen und beispielsweise eine Warnung ausgeben, wenn ein als Argument an eine externe Funktion übergebener Nullzeiger dereferenziert wird.

Obwohl dieser Modus es ermöglicht, interessantere Fehler zu finden, ist er im C++-Analyzer standardmäßig deaktiviert. Eine intermodulare Analyse kann die Analyse verlangsamen. Lesen Sie mehr über die Funktionen und Besonderheiten des Modus.

Plugin für CLion

PVS-Studio hat Plugins für verschiedene JetBrains-IDEs:Rider, IntelliJ IDEA. Irgendwie haben wir eine andere beliebte IDE verpasst – CLion. Unsere Kunden zeigten ein zunehmendes Interesse an dieser Funktion. Darüber hinaus würde das PVS-Studio-Plugin für CLion als plattformübergreifende IDE ein komfortables Arbeiten mit dem C++-Analyzer ermöglichen, unabhängig davon, in welcher Umgebung der Entwickler arbeitet:unter Windows, Linux oder macOS.

Am Ende haben wir ein Plugin für CLion erstellt, obwohl es während der Entwicklung einige Herausforderungen gab.

Erweiterte Unreal Engine-Unterstützung

Eine der in der statischen Analyse verwendeten Technologien ist das Annotieren von Funktionen beliebter Bibliotheken. Der Entwickler hat die Dokumentation solcher Funktionen studiert und nützliche Fakten in Form von Anmerkungen notiert. Der Analysator verwendet diese Anmerkungen, um die Projektanalyse genauer zu machen.

Im PVS-Studio-Analyzer für C++ haben wir zusätzlich Hunderte von Unreal-Engine-Funktionen annotiert. Anmerkungen helfen nicht nur, neue Fehler zu identifizieren, sondern auch einige Fehlalarme zu beseitigen. Wir nutzten ein Open-Source-Projekt, CARLA, als Testgelände. Sie können darüber in unserem Artikel lesen.

Wir haben eine weitere wichtige Verbesserung für den Analysator bereitgestellt, um mit Unreal Engine-Projekten zu arbeiten. Wir haben die Möglichkeit hinzugefügt, Warnungen für bestehenden Code zu deaktivieren – Baselining. Mit dieser Funktion können Entwickler nur mit neuen Warnungen arbeiten, ohne von Warnungen abgelenkt zu werden, die für Legacy-Code ausgegeben werden. Hier können Sie mehr lesen.

MISRA

Wir haben Feedback von unseren Kunden gesammelt und Interesse daran gesehen, Projekte auf die Einhaltung des MISRA C 2012-Standards zu prüfen. Danach haben wir begonnen, diese Richtung auf ein wettbewerbsfähiges Niveau zu entwickeln. Unser Ziel war es, mit unserer Diagnostik die Standardabdeckung auf 80 % zu erhöhen. Als Ergebnis haben wir 57 neue MISRA-Diagnostika erstellt. Wie geplant deckt PVS-Studio jetzt 80 % von MISRA C 2012 ab.

Ein weiteres Ziel war es, den Analysator dazu zu bringen, den MISRA-Compliance-Bericht zu erstellen. Dieser Bericht hilft zu verstehen, ob Ihr Projekt den Standards MISRA C / MISRA C++ entspricht, wobei alle Abweichungen und Neukategorisierungen berücksichtigt werden. Nun, jetzt ist der Analysator in der Lage, einen solchen Bericht zu erstellen. Lesen Sie hier mehr über diese Funktion.

C#

Fehleranalyse, OWASP

2021 haben wir die Taint-Analyse im C#-Analyzer implementiert. Kurz gesagt, dies ist die Analysetechnologie, die die fehlerhafte Datenübertragung über eine Anwendung verfolgt. Daten gelten als potenziell beschädigt, wenn sie aus einer externen Quelle stammen und von einem Angreifer kompromittiert worden sein könnten. Wenn verdorbene Daten an einige Stellen einer Anwendung gelangen (wie eine rohe SQL-Abfrage), verursachen diese Daten potenzielle Schwachstellen. Weitere Informationen zur Taint-Analyse finden Sie in diesem Artikel.

Wir haben Taint-Analysen verwendet, um mehrere Diagnosen zu entwickeln, die nach einer Reihe von Schwachstellen suchen:SQLI, XSS, Path Traversal, XXE, XEE usw.

Apropos Sicherheit und XEE. Sie fragen sich, warum und wie Visual Studio 2022 viel Arbeitsspeicher (wie 100 GB) auf einem Computer verbrauchen könnte? Lesen Sie hier mehr.

Leistung

Wir haben viel Zeit damit verbracht, den C#-Analyzer zu optimieren und eine Reihe von Artikeln darüber geschrieben. Das folgende Diagramm zeigt, wie sich die Analysezeit für große Projekte zwischen den Versionen PVS-Studio 7.11 und PVS-Studio 7.14 verringert hat.

Weitere Einzelheiten darüber, was, wie und warum wir optimiert haben, finden Sie in den folgenden Artikeln:

  • "Alle Fehlerberichte:Wie wir die Analysezeit des Benutzerprojekts von 80 auf 4 Stunden reduziert haben"
  • "Optimierung von .NET-Anwendungen:ein großes Ergebnis kleiner Änderungen"

Unterstützung von Projekten auf .NET 5 und .NET 6

Ein bisschen spät, aber dieses Jahr haben wir dem Analysator beigebracht, mit Projekten unter .NET 5 zu arbeiten. Danach haben wir ihm beigebracht, mit .NET 6 zu arbeiten. Diesmal waren wir nicht zu spät. Der Analysator kann jetzt auch den C# 10-Code parsen.

Außerdem funktioniert PVS-Studio C# auf Linux und macOS jetzt auf .NET 6.

Schlussfolgerung

Natürlich haben wir nicht alle Funktionen erwähnt, die 2021 in unserem Analysegerät auftauchten. Wir haben die allgemeine Analysediagnostik weiterentwickelt und falsch positive Ergebnisse behoben, wir haben einige andere Verbesserungen eingeführt. Beispielsweise haben wir neue Compiler unterstützt, die Möglichkeit zur Feinabstimmung der Analyse mit .pvsconfig-Dateien usw. verbessert. Sie können hier mehr über die Funktionen lesen, die mit jeder PVS-Studio-Version geliefert werden.

Sie können auch unseren YouTube-Kanal abonnieren, um unsere neuen Videos nicht zu verpassen.

Eine letzte Sache:Was würden Sie gerne 2022 in PVS-Studio sehen? Bitte hinterlassen Sie unten einen Kommentar.

Und natürlich schöne Feiertage!