Lernen Sie den PVS-Studio Static Analyzer für Java kennen

Im Laufe der Jahre hat das PVS-Studio-Team den gleichnamigen statischen Analysator entwickelt. Zu diesem Zeitpunkt stellt der Analysator eine komplexe Softwarelösung dar, die die Analyse von Programmiersprachen wie C, C ++, C # und Java auf Windows-, Linux- und MacOS-Plattformen ermöglicht. Erst kürzlich wurde die Java-Sprache zu den unterstützten Sprachen hinzugefügt. Der PVS-Studio-Analysator hat sich unter C ++ - und C # -Entwicklern seit geraumer Zeit als zuverlässiges Tool erwiesen, während PVS-Studio für das Java-Publikum noch ein Neuling ist. Viele haben noch nicht einmal von dem Analysegerät gehört, und diejenigen, die es hatten, sind mit all seinen Fähigkeiten nicht ganz vertraut. In diesem Artikel möchte ich Ihnen PVS-Studio Java vorstellen und über die Startmöglichkeiten und seine Fähigkeiten sprechen.

Abbildung 3



Übersicht


Der statische PVS-Studio-Java-Code-Analysator besteht aus zwei Hauptteilen: dem Kernel, der die Analyse durchführt, und Plugins für die Integration in Build-Systeme (Gradle, Maven) und IDE (IntelliJ IDEA).

Plugins erhalten die Projektstruktur (eine Sammlung von Quelldateien und Klassenpfaden) und übergeben diese Informationen an den Analysatorkern. Darüber hinaus sind Plugins für die Bereitstellung des Kerns für die Analyse verantwortlich - er wird beim ersten Durchlauf automatisch geladen.

Es ist auch möglich, den Analysator direkt auszuführen und die Quellen und den Klassenpfad aufzulisten.

Die Analyse kann durchgeführt werden, wenn Ihr Computer die folgenden Systemanforderungen erfüllt:

Betriebssystem: Windows, Linux, macOS;

Mindestens erforderliche Java-Version, um den Analysator mit Java 8 (64-Bit) auszuführen. Hinweis: Ein zu analysierendes Projekt kann eine beliebige Java-Version verwenden.

Mindestversion von IntelliJ IDEA: 2017.2.

Plugin für Maven


Wenn das Projekt, an dem Sie arbeiten, auf dem Maven-Build-System basiert, können Sie das Plugin pvsstudio-maven-plugin verwenden. Dazu müssen Sie der Datei pom.xml Folgendes hinzufügen:
<pluginRepositories> <pluginRepository> <id>pvsstudio-maven-repo</id> <url>http://files.viva64.com/java/pvsstudio-maven-repository/</url> </pluginRepository> </pluginRepositories> <build> <plugins> <plugin> <groupId>com.pvsstudio</groupId> <artifactId>pvsstudio-maven-plugin</artifactId> <version>{VERSION_PVS_JAVA}</version> <configuration> <analyzer> <outputType>text</outputType> <outputFile>path/to/output.txt</outputFile> .... </analyzer> </configuration> </plugin> </plugins> </build> 

Bevor Sie die Analyse ausführen, müssen Sie die Lizenzdaten eingeben:
 mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY" 

Danach werden die Lizenzinformationen in % APPDATA% / PVS-Studio-Java / PVS-Studio.lic unter Windows oder in ~ / .config / PVS-Studio-Java / PVS-Studio.lic unter MacOS und Linux gespeichert .

Danach können Sie die Analyse ausführen:
 $ mvn pvsstudio:pvsAnalyze 

Im Block <Analysator> können Sie den Analysator konfigurieren. Eine Liste aller Einstellungen finden Sie hier .

Plugin für Gradle


Wenn das Projekt, an dem Sie arbeiten, auf dem Gradle-Build-System basiert, können Sie das Plugin pvsstudio-gradle-plugin verwenden. Dazu müssen Sie der Datei build.gradle Folgendes hinzufügen:
 buildscript { repositories { mavenCentral() maven { url uri('http://files.viva64.com/java/pvsstudio-maven-repository/') } } dependencies { classpath group: 'com.pvsstudio', name: 'pvsstudio-gradle-plugin', version: '{VERSION_PVS_JAVA}' } } 

 apply plugin: com.pvsstudio.PvsStudioGradlePlugin pvsstudio { outputType = 'text' outputFile = 'path/to/output.txt' .... } 

Bevor Sie die Analyse ausführen, müssen Sie die Lizenzdaten eingeben:
 ./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY" 

Danach werden die Lizenzinformationen in % APPDATA% / PVS-Studio-Java / PVS-Studio.lic unter Windows oder in ~ / .config / PVS-Studio-Java / PVS-Studio.lic unter MacOS und Linux gespeichert .

Danach können Sie die Analyse ausführen:
 $ ./gradlew pvsAnalyze 

Im Block 'pvsstudio' können Sie den Analysator konfigurieren. Eine Liste aller Einstellungen finden Sie hier .

Plugin für IntelliJ IDEA


Der Java-Analysator PVS-Studio kann auch als Plugin für IntelliJ IDEA verwendet werden. In diesem Fall erfolgt die Analyse der Projektstruktur mithilfe dieser IDE, und das Plugin bietet eine praktische grafische Oberfläche für die Arbeit mit dem Analysator.

Das PVS-Studio Plugin für IDEA kann installiert werden:
Nachdem Sie das Plugin installiert haben, müssen Sie die Lizenzdaten eingeben:

1) Analysieren -> PVS-Studio -> Einstellungen

Bild 26


2) Registerkarte Registrierung:

Bild 28


Anschließend können Sie die Analyse des aktuellen Projekts ausführen:

Bild 30


Lizenzierung


Der PVS-Studio-Analysator ist für Entwicklerteams gedacht und stellt im Wesentlichen ein proprietäres B2B-Produkt dar. Um mit allen Analysatorfähigkeiten herumzuspielen, können Sie einen Testschlüssel anfordern .

Wenn Sie offene Projekte entwickeln oder beispielsweise Student sind, können Sie eine der kostenlosen Lizenzoptionen von PVS-Studio verwenden.

Unterdrückung falsch positiver Ergebnisse


Um False Positives zu bekämpfen, bietet der Analysator eine Reihe verschiedener Mechanismen.

1. Verwenden Sie spezielle Kommentare im Code:
 void f() { int x = 01000; //-V6061 } 

2. Verwenden der Unterdrückungsdatei .

3. Verwenden der Annotationen @SuppressWarnings (....).

Der Analysator kennt Anmerkungen und gibt möglicherweise keine Warnungen für den bereits markierten Code aus. Zum Beispiel:
 @SuppressWarnings("OctalInteger") void f() { int x = 01000; } 


Fazit


Was wir uns gerade angesehen haben, ist nur ein kleiner Teil dessen, was erzählt werden könnte. Zum Beispiel ist es auch möglich, in SonarQube und vieles mehr zu integrieren. PVS-Studio Java ist eine neue Richtung, die sich aktiv entwickelt:
  • neue Funktionalität hinzugefügt,
  • Fähigkeiten erweitern sich,
  • Diagnoseregeln werden hinzugefügt und verbessert,
  • und vieles mehr.

Folgen Sie dem PVS-Studio- Blog, um die vorhandenen Analysatorfähigkeiten vollständig zu erkunden und die Entstehung neuer in Zukunft nicht zu verpassen.

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


All Articles