Ein Tag von der PVS-Studio-Benutzerunterstützung

Bild 1

Wir freuen uns über thematische Diskussionen zum Thema Codequalität. Wir werden von Kunden, Studenten und anderen Benutzern aus dem gesamten Internet kontaktiert. Unabhängig von Land, Zeitzone oder Sprache. Natürlich gesprochene Sprache. Unter den Programmiersprachen sind wir immer noch an einem begrenzten Satz interessiert. Jetzt ist es C, C ++, C # und Java. Die Vorteile der Kommunikation sind vielfältig. Wir setzen einige Angebote von Nutzern sofort um, weil Sie sind wirklich hilfreich. Oft helfen wir einfach dem Projekt eines anderen und erklären die Warnungen des Analysators, die sich am Ende als Fehler herausstellen. Diese Notiz handelt von einem solchen Fall.

Über den Analysator


PVS-Studio ist ein Tool zum Erkennen von Fehlern und potenziellen Schwachstellen im Quellcode von Programmen, die in C, C ++, C # und Java geschrieben wurden. Es läuft unter Windows, Linux und MacOS.

Für die Kommunikation gibt es drei Arten von Rückmeldungen:

  1. Rückkopplung
  2. Testanfrage
  3. Preisanfrage

Donnerstagabend


Ein aktiver Benutzer, der den Analysator auf seinem Code aktiv ausprobierte, begann, falsche Warnungen zu senden. Bevor ich antworten konnte, sammelten sich 3 Buchstaben. Dies war das Ende des Arbeitstages und es blieb wenig Kraft übrig (zur Frage der Zuverlässigkeit der manuellen Codeüberprüfung). Unser Team bereitete sich aktiv auf die große Veröffentlichung vor, die einige Tage dauerte.

Ich beschloss, die Antwort auf Freitag oder sogar auf die nächste Woche zu verschieben:

Hallo Konstantin.

Wir analysieren Warnungen. Nächste Woche werde ich verdächtige Orte kommentieren :-)

Dies ist ein Hinweis darauf, dass die statische Code-Analyse sehr effizient ist und die manuelle Codeüberprüfung in vielen Fällen, insbesondere am Ende des Arbeitstages, der automatischen Überprüfung unterlegen ist.

Mit Erlaubnis des Benutzers werde ich Sie über die Korrespondenz informieren:

Buchstabe 1

False Positives V712:

uint32_t StartUpCounter = 0, HSEStatus = 0; RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); // V712... 

Buchstabe 2

Es gibt eine falsch positive V715:

 { // V715 ... lpmode.cpp 356 HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); 

Buchstabe 3

Weihnachtsbaumstöcke, verzauberter Ort! Alles ist da, schwört (siehe Code aus früheren Briefen):

V560 Ein Teil des bedingten Ausdrucks ist immer wahr: (StartUpCounter! = ((Uint16_t) 0x5000)). lpmode.cpp 356

V776 Potenziell Endlosschleife. Die Variable in der Schleifenausgangsbedingung 'HSEStatus == 0' ändert ihren Wert zwischen den Iterationen nicht. lpmode.cpp 356

Vielleicht verstehe ich etwas nicht? Aber in der Praxis funktioniert alles und wenn der Quarz nicht startet, verlassen wir diesen Abschnitt durch Timeout ;-)

Buchstabe 4 (Antwort)

Hallo Konstantin.

Wir analysieren Warnungen. Nächste Woche werde ich verdächtige Orte kommentieren :-)

Buchstabe 5

Hölle Ich habe Ihren Code erst gesehen, nachdem Sie mit seitlicher Sicht geschrieben haben - die do-Anweisung wurde übersprungen ... Alles passte zusammen! Ein Auge verschwimmt%)

mache {...} while (...);

Fazit


Wie Sie vielleicht bemerkt haben, gab es 4 Warnungen am selben Ort, aber es dauerte noch einige Zeit, um den Benutzer von einem Fehler zu überzeugen. In einer solchen Situation hätte eine manuelle Überprüfung nicht einmal eine Chance.

Eine ähnliche Geschichte mit Happy End: " Wie sich herausstellte, dass PVS-Studio aufmerksamer war als dreieinhalb Programmierer ."

Verwenden Sie in Ihrem Projekt statische Analysegeräte. Sie sind kein Ersatz für die Codeüberprüfung mit einem Kollegen, sondern eine nützliche Ergänzung zur Codequalitätskontrolle.



Wenn Sie diesen Artikel einem englischsprachigen Publikum zugänglich machen möchten, verwenden Sie bitte den Link zur Übersetzung: Svyatoslav Razmyslov. Ein Tag vom PVS-Studio User Support .

Source: https://habr.com/ru/post/de467563/


All Articles