PVS-Studio(静态代码分析工具)
v7.02.32296- 软件大小:107.0 MB
- 更新日期:2019-06-15 11:33
- 软件语言:简体中文
- 软件类别:编程工具
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:
软件介绍 人气软件 下载地址
PVS-Studio是一款功能强大的静态代码分析工具,可以检测C和C ++应用程序源代码中的错误,它还支持C ++ / CLI和C ++ / CX语言扩展,该分析仪主要是为Visual Studio用户设计的,静态分析器不能替代其他的bug搜索工具,它只是补充它们,将静态分析工具与开发过程集成有助于在它们“刚出生”时消除大量错误,从而节省您的后续消除时间和资源。众所周知,越早发现错误,就越容易解决它。由此得出的结论是静态分析仪应该定期使用,因为它是获得大部分静态分析的最佳方法!
软件功能
PVS-Studio产品包含一组静态分析规则,旨在检测使用OpenMP技术编写的并行C / C ++程序代码中的错误。
这套规则早先作为一个名为VivaMP的独立解决方案提供。
现在,VivaMP静态分析器包含在PVS-Studio软件产品中,名称“VivaMP”与相应的规则集相关联,以搜索并行错误。
VivaMP的一组专门规则允许您检测导致竞争条件的一些错误,处理器时间的无效使用等。
在测试阶段检测这些缺陷的主要困难是它们的不规则性。
静态分析器使用源代码并检查所有可能的程序执行方式。
所以它可以找到一些非常罕见的错误。
另一方面,静态分析无法检测到英特尔Parallel Inspector等动态分析仪的大部分内容。
我们不应该只尝试一种检测并行错误的方法。静态和动态分析在这里相互补充。
PVS-Studio工具中采用的静态代码分析方法与其他类型的分析相比具有明显的优势。并行程序中的错误通常很难在调试过程中调用和检测。静态分析的主要优点是您不需要启动应用程序,也不需要独立于硬件环境。代码检查的过程不会以任何方式损坏代码本身。分析过程完全由人控制,程序员决定是否需要修改。
PVS-Studio工具与知识库一起提供并行代码(帮助系统,文章,样本),这将提高程序员在并行编程领域的知识。
软件特色
在IDE中重新编译后立即自动(增量)分析单个文件。
直观的界面 - 轻松导航代码发出的警告。您需要的一切都在您的指尖 - 按严重性级别排序的警告,突出显示的代码片段,需要进一步修订,以及快速访问文档。PVS-Studio文档提供了如何修复检测到的错误的方法。
出色的可扩展性 - PVS-Studio支持多核和多处理器系统,能够指定要使用的核心数量; 可以与IncrediBuild一起使用。
质量警告抑制 - 抑制“旧”消息,以便分析仪为它们发出0警告。这允许在开发过程的任何时刻开始分析。如果您只需要检查新编写的代码片段,这将特别有用。
在PVS-Studio IDE / Standalone窗口中对分析结果(日志文件)进行交互式过滤:发出的警告按诊断编号,文件名,诊断文本中的单词以及从分析中排除文件的能力进行排序名称,文件夹或掩码; 对过去N天内修改的文件运行分析。
虚警标记 - 用于抑制特定代码片段中某种诊断的代码标记;
错误统计 - 错误更正速度,在一段时间内发现的错误数量,未固定的点数可以用图形表示查看(需要Microsoft Excel)。
能够进行夜间检查 - 分析仪在夜间进行扫描,并在早上为您提供完整的结果。
命令行的项目分析:帮助将PVS-Studio集成到夜间构建中。
报告文件中的相对路径,以在不同的计算机上查看它们
用于C / C ++的编译器监视 - 分析没有Visual Studio项目文件的项目(.sln / .vcxproj)。如果CLMonitoring功能不够,则可以直接在基于Makefile的(或任何其他)构建系统中集成PVS-Studio。
安装方法
获取PVS-Studio安装包后,您可以开始安装该程序。
批准许可协议后,将为各种受支持的Microsoft Visual Studio版本提供集成选项。在特定系统上不可用的集成选项将显示为灰色。如果系统上存在不同版本的IDE或多个IDE,则可以将分析器集成到每个可用版本中。
要确保已正确安装PVS-Studio工具,可以打开“关于”窗口(“帮助/关于”菜单项)。PVS-Studio分析器必须存在于已安装组件的列表中,安装完成后将注册码输入即可(安装包中提供了注册码)。
使用说明
该分析仪可以平滑地集成到VS2005 - VS2013中。完成此类集成后,IDE的主菜单中会出现一个新的“PVS-Studio”菜单项,以及一个用于处理诊断消息的窗口。
初始设置
安装完毕后,分析仪就可以立即工作了。在大多数情况下,您无需设置任何内容即可运行第一次分析。在继续之前,您可能需要调整的唯一设置参数是从分析中排除第三方库。你不打算在jpeg库的源文件中修改任何东西,不是吗?然后就没有必要分析它了。此外,从分析中排除一些文件夹将有助于减少分析时间。要从分析中排除的文件夹可以通过Options-> Dont't Check Files-> PathMasks来定义。
如果文件的完整路径包含指定名称之一,则不会对其进行分析。默认情况下,列表已包含某些文件夹的名称。但是,项目中的ZLib库的文件夹可能具有除“zlib”之外的其他名称 - 例如“zip_lib”。这就是为什么你可能需要相应地编辑这个列表。要开始编辑,请单击带有三个点的按钮。
以下是您可以在PathMasks列表中使用的有效掩码的示例:
c:\ Libs \ - 存储在指定文件夹及其子文件夹中的所有项目文件将从分析中排除。
\ Libs \或* \ Libs \ * - 存储在包含«Libs»子文件夹的文件夹路径中的所有文件都将从分析中排除。如果没有指定“*”字符,它们将自动添加,因此两种写掩码的方式都是相同的并且是正确的。
Libs或* Libs * - 包含名为“Libs”的子文件夹或将此文本作为其名称的一部分的所有文件路径将从分析中排除。此外,在这种情况下,将排除名称包含文本Libs的所有文件 - 例如c:\ project \ mylibs.cpp。为避免混淆,我们建议您始终使用斜杠。
除了排除整个文件夹外,您还可以指定掩码以排除单独的文件。为此,提供了FileNameMasks设置。
项目分析
完成初始设置后,即可开始分析项目。您很可能想要检查整个解决方案。为此,选择菜单项'PVS-Studio-> Check-> Solution'
使用诊断消息列表
分析完成后,所有诊断消息都将显示在特殊窗口中。该窗口具有许多控件,所有这些控件都用于根据各种标准启用或禁用用户感兴趣的诊断消息的显示。一开始可能看起来很复杂,所以让我们更详细地检查所有控件。
上下文菜单
双击可以转到相关的代码片段。右键单击打开上下文菜单。
菜单非常简单,没有必要重载本文以及每个项目的描述。
请注意菜单项«不检查文件并隐藏来自...的所有消息»。单击它会打开一个下拉列表,列出您可以添加到排除列表中的路径。
您可以从Visual Studio中的PVS-Studio菜单手动启动文件,项目或解决方案的分析:
找到的错误显示在PVS-Studio分析结果工具窗口中。您可以看到错误描述,跳转到代码,排序和过滤错误,将错误标记为错误警报:
每次构建后,PVS-Studio都可以自动对已更改的文件进行分析。PVS-Studio支持从命令行执行并与TFS和其他构建自动化系统(如CruiseControl .NET和Hudson)集成。
警告级别和诊断规则集
PVS-Studio将所有警告分为3个确定级别:高,中和低。某些警告指的是特殊的失败类别。让我们更详细地考虑这些级别:
高(1) - 具有最大确定性的警告。此类警告通常表示错误,需要立即纠正。
中等(2) - 确定度较低的错误,仍值得关注。
低(3) - 具有最低确定性的警告,指向代码中的小缺陷。此级别的警告通常具有高百分比的误报。
失败 - 分析仪的内部警告通知工作期间的一些问题。这些是分析器的错误的警告(例如,消息V001,V003 ANS等)和公用事业任何未处理的输出,由分析器本身所使用的分析期间(一个预处理器,指令预处理器CMD),在标准输出/标准错误显示。例如,Fails消息可以是预处理器的消息,关于预处理源代码的错误,访问文件的错误(文件不存在,或者被防病毒阻止)等等。
应该记住,错误的某个代码不一定将其绑定到特定的确定性级别,并且跨级别的分布在很大程度上取决于生成它们的上下文。Microsoft Visual Studio插件和编译器监视UI中的诊断消息的输出窗口具有级别按钮,允许根据需要对警告进行排序。
分析仪有5种诊断规则:
通用(GA) - 通用分析诊断。这是PVS-Studio中的主要诊断规则集。
优化(OP) - 微优化的诊断。这些是有关提高代码效率和安全性的提示。
64位(64) - 诊断,允许检测与64位应用程序开发相关的特定错误,并将代码从32位平台迁移到64位平台。
客户特定(CS) - 由用户请求开发的高度专业化诊断。默认情况下,禁用此组诊断。
MISRA - 根据MISRA标准(汽车工业软件可靠性协会)开发的一套诊断程序。默认情况下禁用此组诊断。
具有确定性级别(1,2,3)的诊断组(GA,OP,64,CS,MISRA)的简短描述用于简写符号,例如在命令行参数中。示例:GA:1,2。
切换某组诊断规则集会显示或隐藏相应的消息。
您可以在文档的相应部分中找到详细的诊断规则列表。
分析器消息可以按各种标准进行分组和过滤要获得有关分析器警告列表的工作的更多详细信息。
PVS-Studio和Microsoft Visual Studio
安装PVS-Studio时,您可以选择分析器应与哪些版本的Microsoft Visual Studio IDE集成。
在确定所有必要选项并完成设置后,PVS-Studio将集成到IDE的菜单中。在图中,您可以看到相应的命令已出现在Visual Studio的菜单中,以及消息输出窗口中。
在设置菜单中,您可以根据需要自定义PVS-Studio,以便最方便地使用它。例如,它提供以下选项:
预处理器选择;
从分析中排除文件和文件夹;
选择要在分析期间显示的诊断消息类型;
很多其他设置。
最有可能的是,在您第一次遇到PVS-Studio时,您不需要任何这些,但稍后,它们将帮助您使用该工具优化您的工作。
PVS-Studio和IntelliJ IDEA
安装分析仪时,可以将PVS-Studio插件集成到IntelliJ IDEA中,从而可以直接从IDE执行分析和处理分析器报告。
安装完成后,插件将出现在“Analyze”菜单中(“Analyze”>“PVS-Studio”)。下面给出了带有集成PVS-Studio插件的IntelliJ IDEA的屏幕截图。
在设置菜单中,可以禁用诊断规则,从分析中排除文件/目录等。
文档部分“ 如何运行PVS-Studio Java ”描述了Java分析器的操作功能。它还提供了其他安装选项,包括为Maven,Gradle安装插件。
C和C ++编译器监控UI(Standalone.exe)
PVS-Studio可以独立于Microsoft Visual Studio IDE使用。编译器监控UI允许在构建项目时分析项目。它还通过单击诊断消息来支持代码导航,并搜索代码片段以及宏和数据类型的定义。
PVS-Studio_Cmd.exe是一个工具,它可以从命令行分析Visual Studio解决方案(.sln)以及Visual C ++和Visual C#项目(.vcxproj,.csproj)。例如,在需要在构建服务器上集成静态分析的情况下,这可能很有用。PVS-Studio_Cmd.exe允许作为目标项目的完整分析和增量(对自上次构建以来已更改的文件的分析)执行。将实用程序的返回代码视图作为位掩码使您可以获得有关分析结果的详细信息,并在发生问题时识别问题。因此,使用PVS-Studio_Cmd.exe实用程序,您可以“巧妙地”配置静态代码分析的场景,并将其嵌入到CI过程中。PVS-Studio_Cmd.exe模块的使用在“”部分中有更详细的描述。从命令行分析Visual C ++(。vcxproj)和Visual C#(。csproj)项目 “。
在Visual Studio IDE中工作时,您可以运行不同类型的分析 - 在解决方案,项目文件,所选项目等。例如,运行的分析解决方案执行如下:“PVS-Studio - >检查 - >解决方案“。
启动验证后,将出现进度条,其中包括按钮暂停(暂停分析)和停止(终止分析)按钮。在分析过程中,潜在危险的构造将显示在检测到的错误列表中。
术语“潜在危险的构造”意味着分析器将特定代码行视为缺陷。此行是否是应用程序中的真正缺陷仅由了解应用程序的程序员确定。您必须正确理解使用代码分析器的这一原则:在解决程序中修复错误的任务时,没有工具可以完全取代程序员。只有依赖他的知识的程序员才能做到这一点。但该工具可以而且必须帮助他。这就是为什么代码分析器的主要任务是减少程序员必须查看的代码片段的数量,并决定如何处理它们。
使用诊断消息列表
在真正的大型项目中,将不会有数十个甚至数百个甚至数千个诊断消息,所有这些都将是一项艰巨的任务。为了简化操作,PVS-Studio分析仪提供了多种机制。第一种机制是通过错误代码进行过滤。第二个是按诊断消息文本的内容进行过滤。第三种是按文件路径过滤。我们来看一下使用过滤系统的例子。
假设您确定代码为V112的诊断消息(使用幻数)在您的应用程序中绝不是真正的错误。在这种情况下,您可以在分析仪的设置中关闭这些诊断警告的显示:
之后,代码为V112的所有诊断警告将从错误列表中消失。请注意,您无需重新启动分析仪。如果再次打开这些消息,它们将显示在列表中,而不会重新启动分析。
现在让我们看看另一个选项 - 基于文本的诊断消息过滤。让我们看一下分析器警告和发布它的代码的示例:
obj.specialFunc(obj);
分析器警告:V678对象用作其自身方法的参数。考虑检查'specialFunc'函数的第一个实际参数。
分析器发现可疑的是,相同的对象作为参数传递给调用此方法的参数。与分析器相反,程序员可能知道该方法的用法是可接受的。因此,您可能需要过滤掉所有此类警告。您可以通过在“关键字邮件过滤”设置中添加相关过滤器来完成此操作。
之后,其文本包含该表达式的所有诊断消息将从错误列表中消失,而无需重新启动代码分析器。您可以通过简单地从过滤器中删除表达式来打开它们。
减少诊断消息数量的最后一种机制是通过项目文件名称和文件路径的掩码进行过滤。
假设您的项目使用Boost库。分析仪肯定会告知您该库中的潜在问题。但是,如果您确定这些消息与您的项目无关,则可以在“不检查文件”页面上添加Boost文件夹的路径:
之后,将不会显示与此文件夹中的文件相关的诊断消息。
此外,PVS-Studio具有“标记为误报警”功能。它使您能够在源代码中标记这些行,这会导致分析器生成错误警报。标记代码后,分析器不会对此代码生成诊断警告。在验证新编写的代码时,此功能可以在软件开发过程中永久使用分析器。
因此,在以下示例中,我们使用代码V640关闭诊断消息:
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
matrix[i][j] = Square(i) + 2*Square(j);
cout << "Matrix initialization." << endl; //-V640
....
人气软件
-
redis desktop manager2020.1中文 32.52 MB
/简体中文 -
s7 200 smart编程软件 187 MB
/简体中文 -
GX Works 2(三菱PLC编程软件) 487 MB
/简体中文 -
CIMCO Edit V8中文 248 MB
/简体中文 -
JetBrains DataGrip 353 MB
/英文 -
Dev C++下载 (TDM-GCC) 83.52 MB
/简体中文 -
TouchWin编辑工具(信捷触摸屏编程软件) 55.69 MB
/简体中文 -
信捷PLC编程工具软件 14.4 MB
/简体中文 -
TLauncher(Minecraft游戏启动器) 16.95 MB
/英文 -
Ardublock中文版(Arduino图形化编程软件) 2.65 MB
/简体中文