了解适用于Java的PVS-Studio静态分析器

多年来,PVS-Studio团队一直在开发同名的静态分析仪。 在这一点上,分析仪代表了一个复杂的软件解决方案,它可以分析Windows,Linux和macOS平台上的C,C ++,C#和Java等编程语言。 最近,Java语言加入了受支持语言的行列。 在相当长的一段时间内,PVS-Studio分析器已经证明自己是C ++和C#开发人员中可靠的工具,而对于Java读者来说,PVS-Studio仍然是一个新手。 许多人甚至没有听说过分析仪,而那些听过的人对分析仪的全部功能并不十分熟悉。 因此,在本文中,我想向您介绍PVS-Studio Java,讨论启动它的方法及其功能。

图3



总览


PVS-Studio Java静态代码分析器由2个主要部分组成:执行分析的内核以及用于集成到构建系统(Gradle,Maven)和IDE(IntelliJ IDEA)中的插件。

插件获取项目结构(源文件和类路径的集合),然后将此信息传递给分析器核心。 此外,插件负责部署核心以进行分析-它将在首次运行时自动加载。

也可以直接运行分析器,列出源和类路径。

如果您的计算机满足以下系统要求,则可以进行分析:

操作系统:Windows,Linux,macOS;

运行分析仪所需的最低Java版本:Java 8(64位)。 注意:被分析的项目可以使用任何Java版本。

最低版本的IntelliJ IDEA:2017.2。

Maven插件


如果您正在处理的项目基于Maven构建系统,则可以使用插件pvsstudio-maven-plugin。 为此,您需要将以下内容添加到pom.xml文件中:
<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> 

在运行分析之前,您需要输入许可证数据:
 mvn pvsstudio:pvsCredentials "-Dpvsstudio.username=USR" "-Dpvsstudio.serial=KEY" 

之后,许可信息将保存在Windows上的%APPDATA%/ PVS-Studio-Java / PVS-Studio.lic中 ,或在macOS和Linux上的〜/ .config / PVS-Studio-Java / PVS-Studio.lic中

之后,您可以运行分析:
 $ mvn pvsstudio:pvsAnalyze 

在块<analyzer>中 ,可以配置分析仪。 在此处可以找到所有设置的列表。

Gradle插件


如果您正在处理的项目基于Gradle构建系统,则可以使用插件pvsstudio-gradle-plugin。 为此,您需要在build.gradle文件中添加以下内容:
 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' .... } 

在运行分析之前,您需要输入许可证数据:
 ./gradlew pvsCredentials "-Ppvsstudio.username=USR" "-Ppvsstudio.serial=KEY" 

之后,许可证信息将保存在Windows OS上的%APPDATA%/ PVS-Studio-Java / PVS-Studio.lic中 ,或在macOS和Linux上的〜/ .config / PVS-Studio-Java / PVS-Studio.lic中 。 。

之后,您可以运行分析:
 $ ./gradlew pvsAnalyze 

在“ pvsstudio”块中,您可以配置分析仪。 可以在此处找到所有设置的列表。

IntelliJ IDEA的插件


PVS-Studio Java分析器也可以用作IntelliJ IDEA的插件。 在这种情况下,项目结构的解析是通过此IDE进行的,并且插件提供了方便的图形界面来与分析仪一起使用。

可以安装IDEA的PVS-Studio插件:
安装插件后,您需要输入许可证数据:

1)分析-> PVS-Studio->设置

图片26


2)注册标签:

图片28


然后,您可以运行当前项目的分析:

图片30


发牌


PVS-Studio分析仪适用于开发人员团队,实质上代表了专有的B2B产品。 要使用所有分析仪功能,您可以请求一个试用密钥

如果您正在开发开放项目,或者例如您是学生,则可以使用PVS-Studio的免费许可选项之一。

误报抑制


为了对抗误报,分析仪提供了一组不同的机制。

1.在代码中使用特殊注释:
 void f() { int x = 01000; //-V6061 } 

2.使用禁止文件

3.使用@SuppressWarnings(....)批注。

分析器知道注释,可能不会对已标记的代码发出警告。 例如:
 @SuppressWarnings("OctalInteger") void f() { int x = 01000; } 


结论


我们刚刚看到的只是可以告诉的一小部分。 例如,还可以与SonarQube等集成。 PVS-Studio Java是正在积极开发的新方向:
  • 添加了新功能,
  • 能力在扩大,
  • 诊断规则已添加和改进,
  • 还有更多。

要充分利用现有的分析仪功能,并且将来不要错过新功能,请关注PVS-Studio 博客

Source: https://habr.com/ru/post/zh-CN462267/


All Articles