PVS-Studio 7.00

PVS-Studio C#\ Java \ C ++ 今天是重要的一天-在第六版的28个版本发布之后,我们发布了PVS-Studio 7.00,其中的主要创新是对Java语言的支持。 但是,在2018年,关于C ++,C#,基础结构和对编码标准的支持,已经积累了许多其他重要的变化。 因此,我们提请您注意一条注释,该注释总结了PVS-Studio最近发生的主要更改。

PVS-Studio是用于检测用C,C ++,C#和Java编写的程序的源代码中的错误和潜在漏洞的工具。 它可以在Windows,Linux和macOS上运行。

通过在各种开源项目的验证过程中发现的大量错误代码,很好地证明了分析器的功能。

我们将从更改开始,实际上,由于该更改,决定将版本号从6.x更改为7.x。 我们已经准备了很长时间,这是Java语言分析器的支持。

爪哇


Java分析器中最重要的是它出现了:)。 我们邀请Java开发人员下载该工具并签出他们正在从事的项目。

我们向用户提供了将分析仪集成到装配系统中的最流行方法:

  • Maven插件。
  • Gradle插件。
  • IntelliJ IDEA的插件。

如果使用自写的汇编系统,则可以通过列出源代码和类路径直接运行分析器。

您可以在文档页面“ 如何启动PVS-Studio Java ”中找到有关启动分析仪的所有方法的详细信息。

我们不能忽略在Java开发人员中非常流行的SonarQube代码质量控制平台,因此我们在SonarQube插件中添加了Java语言支持。

C,C ++


在2018年,我们的团队积极致力于C ++分析器的开发。 出现了许多新的诊断方法,以及改进的算法 ,这些算法使您可以收集和处理从语法树中检索到的信息。

CWE,CERT

来自C ++分析器(如C#分析器)的消息是根据通用弱点枚举( CWE )进行分类的。 CWE是潜在漏洞和已确认漏洞的分类系统。 它得到社区的支持,以识别软件问题并创建可用于识别和修复这些问题的自动化工具。

此外,已根据CERT C编码标准和CERT C ++编码标准对消息进行了分类。 SEI CERT编码标准是由CERT协调中心(CERT协调中心,CERT / CC)开发的一套用C,C ++,Java和Perl编写软件(软件)的标准,旨在提高软件的可靠性和安全性。

根据这些警告对C和C ++诊断进行分类,可以将PVS-Studio用作SAST解​​决方案

米斯拉

在2018年,PVS-Studio静态代码分析器开始根据MISRA C和MISRA C ++标准对警告进行分类。 由于这些标准的支持,分析仪已变得可以有效地用于提高嵌入式系统程序的安全性,可移植性和可靠性。

更多详细信息:“ PVS-Studio:支持编码标准MISRA C和MISRA C ++ ”。

MISRA支持已与分析器对各种嵌入式系统支持的开发相关,这将在本文的下一部分中进行讨论。

嵌入式开发

2018年,PVS-Studio分析仪支持以下功能:

  • 窗户 IAR嵌入式工作台,用于ARM C,C ++的C / C ++编译器
  • Windows / Linux Keil µVision,DS-MDK,ARM编译器5/6 C,C ++
  • Windows / Linux 德州仪器Code Composer Studio,ARM代码生成工具C,C ++
  • Windows / Linux / macOS。 GNU Arm嵌入式工具链,Arm嵌入式GCC编译器,C,C ++

关于嵌入式系统支持的两个注意事项:

  1. PVS-Studio 6.22静态代码分析器适用于ARM编译器(Keil,IAR)
  2. PVS-Studio引入了对GNU Arm嵌入式工具链的支持

自定义注释扩展

有时项目会使用自己的各种系统功能的实现,例如memcpymalloc等。 该分析仪非常擅长使用标准功能来查找错误,但是直到最近才在用户代码中使用此类算法。 现在,使用V_FUNC_ALIAS批注您可以将函数名称与系统名称进行匹配。

评论格式:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • 密钥实现 -设置为其定义别名的标准函数的名称。
  • 功能键-设置别名。 在此键中指定了名称的功能的签名必须与在实现键中指定的功能的签名相匹配。
  • 关键的名称。 可能不存在。
  • 名称空间键是名称空间名称。 可能不存在。

考虑一个例子:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

现在,分析器将以与调用memcpy相同的方式处理对MyMemCpy函数的调用。 例如,将为该代码发出警告V512:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C#


今年,C#分析器没有重大变化。 对诊断程序和错误修复进行了一些改进。 来自C#解析器(如C ++解析器)的消息是根据通用弱点枚举( CWE )进行分类的。 此处给出C#诊断与CWE标识符的对应关系(请参见编号为3xxx的诊断)。

我们计划在2019年恢复对C#分析器的更加积极的开发。 计划开发新的诊断程序并改善数据流分析(Data-Flow Analysis)的机制。

报告转换器


实用程序PlogConverter.exe和plog-converter分别包含在Windows和Linux / macOS的PVS-Studio发行版中。 这些实用程序的源代码也可以在GitHub找到

随着PVS-Studio for Java的问世,我们重新设计了针对C,C ++,C#的代码突出显示并添加了FullHtml格式的Java( 用于Web浏览器 )。

另外,对于这种格式的报告,还添加了MISRA列:

MISRA的PVS-Studio

与CWE ID一样,MISRA列是可选的,代码安全研究人员在检查分析结果时会包括它。

SonarQube插件


1.全面更新

我们使用新的API重新编写了插件。 这样就可以添加新功能,并确保与SonarQube 7.x兼容。 现在支持的最低版本是SonarQube 6.7 LTS

2. PVS-Studio for Java

对Java语言的诊断支持已添加到新版本的插件中。 现在,您可以将PVS-Studio添加到Java项目的其他质量控制工具中。

3. MISRA标准

我们最近宣布支持 MISRA C和MISRA C ++标准。 新插件也有支持。 例如,添加了一个参数(除了CWE之外):

 sonar.pvs-studio.misra=active 

其中包括将MISRA标识符添加到分析器警告中:

米斯拉


无论此参数如何,都可以在分析结果中搜索misrapvs-studio#misra标签 。 有关找到的MISRA警报数量的信息也已添加到指标中,稍后将进行讨论。

4.新指标

在菜单项目->您的项目->测量中,可以使用各种代码指标,其中包括PVS-Studio提供的各种信息:

声纳古伯


对于每个指标,您可以构建图形并监视各种分析器警告组外观的动态。

4.多行过渡

某些分析器诊断程序会在文件的多行上发出警告。 有时它们相距很远。 在新版本中,我们添加了多行过渡:

声纳古伯


SonarQube还支持不同文件之间的转换。 稍后,我们将添加此类转换以用于诊断,其中包含互模分析。

6.文件

该文档进行了重大更改。 PVS-Studio是跨平台和多语言的产品,因此所有处理均旨在编写用于在特定系统上工作的更通用,更易理解的说明。

SAST


直到最近,在我们的文章中,我们将PVS-Studio定位为检测代码错误的工具。 同时,在安全性方面,我们几乎没有考虑过PVS-Studio。 今年,我们纠正了这种情况,并从测试应用程序安全性和DevSecOps实践的角度对工具进行了研究。

PVS-Studio是用于静态应用程序安全测试(静态应用程序安全测试,SAST)的工具。 换句话说,PVS-Studio分析仪不仅检测错别字,无效代码和其他错误,而且还检测潜在的漏洞。

为方便将PVS-Studio用作SAST工具的专家使用,分析仪在“ 通用弱点枚举” ,“ SEI CERT编码标准”上显示警告。 PVS-Studio诊断程序符合各种标准的符合性表:

  1. CWE合规
  2. 合规SEI CERT

在“ PVS-Studio作为SAST解​​决方案一文中对此主题进行了详细描述。

我们还提供结识出版物的方法:

  1. PVS-Studio如何帮助寻找漏洞?
  2. 我们用脚射击,处理输入数据
  3. 我们向安全专家提供PVS-Studio分析仪

PVS-Studio免费


在庆祝新的2019年的前夕,PVS-Studio团队决定向GitHub或Bitbucket上托管的所有开源项目的所有贡献者提供令人愉悦的礼物。 他们有机会免费使用PVS-Studio静态分析器来开发开源项目。

详细信息:“ 为开发开源项目的人员免费提供PVS-Studio 。”

操作系统


在2018年,PVS-Studio学会了在macOS的控制下工作。 我们的团队为此事件专门进行了XNU内核检查:“ 针对macOS的PVS-Studio版本:Apple XNU内核中的64个弱点 ”。

XNU是Apple开发的计算机操作系统的核心,并用于OS X系列OS(macOS,iOS,tvOS,watchOS)。



如果您想与说英语的读者分享这篇文章,请使用以下链接:Andrey Karpov,Svyatoslav Razmyslov。 PVS-Studio版本7.00

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


All Articles