
今天是重要的一天-在第六版的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 ”中找到有关如何运行分析仪的所有方法的详细信息。
我们无法回避代码质量控制的SonarQube平台,该平台在Java开发人员中非常流行,因此我们在
SonarQube插件中添加了对Java语言的支持。
C,C ++
在2018年,我们的团队正在积极致力于C ++分析器的开发。 随着
算法的出现,出现了许多新的诊断方法,这些
算法允许收集和处理从语法树提取的数据。
CWE,CERTC ++(和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 ++
关于支持嵌入式系统的两个注意事项:
- 静态代码分析器PVS-Studio 6.22现在支持ARM编译器(Keil,IAR) 。
- PVS-Studio现在支持GNU Arm嵌入式工具链 。
扩展自定义注释有时,在项目中使用各种系统功能(例如
memcpy ,
malloc等)的此类自定义实现。 分析器可以很好地检测使用标准功能的代码中的错误,但是在定制代码中,直到最近才应用这种算法。 现在,使用注释
V_FUNC_ALIAS,您可以输入与系统功能一致的功能名称。
评论格式:
- 实现密钥-指定确定别名的标准函数的名称。
- 功能键-指定别名的名称。 在此键中指定了名称的功能的签名必须与在实现键中指定的功能的签名相匹配。
- 类键是类的名称。 可能会丢失。
- 名称空间键是名称空间的名称。 可能会丢失。
让我们看一个例子:
现在,分析器将以与
memcpy调用相同的方式处理
MyMemCpy函数的调用。 例如,对于此类代码,将发出V512警告:
int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int));
C#
今年,C#分析器没有重大变化。 在诊断和错误修复方面进行了一些改进。 C#分析器的警告以及C ++分析器的警告已根据常见弱点枚举(
CWE )进行了分类。
这里给出
了带有CWE标识符的C#诊断的映射(请参见编号为3xxx的诊断)。
我们计划在2019年恢复对C#分析器的更加积极的开发。我们还计划开发新的诊断程序并改进数据流分析机制。
报告转换器
PlogConverter.exe和plog-converter实用程序分别包含在Windows和Linux / macOS的PVS-Studio发行版中。 此外,这些实用程序的源代码可在
GitHub上获得 。
随着针对Java的PVS-Studio的出现,我们重新设计了C,C ++,C#的代码突出显示部分,并以FullHtml格式添加了Java(
用于Web浏览器 )。
此外,以这种格式为报告添加了MISRA列。
与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标识符添加到分析仪警告中:
无论此参数如何,在分析结果中都可以使用标记
misra和
pvs-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诊断表到不同标准的映射表:
- CWE映射
- SEI证书映射
在“
PVS-Studio作为SAST解决方案 ”
一文中对此主题进行了详细描述。
我们还建议您查看以下出版物:
- PVS-Studio如何帮助检测漏洞?
- 处理输入数据时,请放手脚 。
- 向安全专家发放PVS-Studio分析仪许可证 。
PVS-Studio免费
在2019年新年前夜,PVS-Studio团队决定为GitHub或Bitbucket上托管的所有开源项目的贡献者献上一份礼物。 他们可以免费使用PVS-Studio静态分析器来开发开源项目。
详细信息:“
为开发开源项目的人员免费使用PVS-Studio ”。
操作系统
在2018年,PVS-Studio已开始在macOS下工作。 我们的团队决定执行XNU内核检查,以使其与此事件同时发生:“
PVS-Studio现在可在macOS上使用:Apple的XNU内核中的64个弱点 ”。
XNU是Apple开发的计算机操作系统的内核,用于OS X操作系统(macOS,iOS,tvOS,watchOS)。