
在本文中,您将学习如何运行嵌入式项目检查以及如何使用分析器报告。 PVS-Studio分析仪支持许多用于嵌入式系统的编译器。 在当前版本中,使用以下用于Windows,Linux和macOS的编译器之一进行编译时,可以检查项目:
安装方式
安装过程取决于您正在开发的操作系统。 在Linux下,您可以从存储库或安装包中安装分析器。
基于Debian的系统的示例:
wget -q -O - https:
或
sudo gdebi pvs-studio-VERSION.deb
对于macOS,可以通过
Homebrew完成安装和更新:
brew install viva64/pvs-studio/pvs-studio brew upgrade pvs-studio
第二个选项是从
dmg安装软件包或从存档手动解压缩。
在Windows下,使用安装程序执行安装:
您可以下载所有受支持系统的安装软件包,并且,如有必要,请在“
下载并尝试PVS-Studio ”页面上请求试用密钥。
安装后,输入许可证密钥。 您可以在文档页面“
如何输入PVS-Studio许可证以及下一步做什么 ”中找到有关如何在不同平台上执行此操作的信息。
项目验证
嵌入式系统的项目验证可以与在Windows,Linux和macOS下进行开发时相同的方式执行。
文章“
在Linux环境中开发C ++程序时介绍PVS-Studio静态分析器 ”中讨论了Linux的启动选项。 请记住,由于交叉编译用于在嵌入式环境下进行构建,并且编译器名称可能是非标准的,因此在分析项目时可能需要指定它。 为此,请使用
–compiler或
–c命令行
选项 :
pvs-studio-analyzer analyze -c MyCompiler
当分析器无法确定使用的编译器类型时,即发出错误“找不到编译单元”时,请使用此参数。
交叉编译时,由于目标平台与进行汇编的平台不同,因此您可能需要使用
--platform参数以及预处理器的类型(
--preprocessor )来指定目标平台。
支持的平台:
win32,x64,linux32,linux64,macos,arm。支持的预处理器:
gcc,clang,keil。默认情况下,Linux选择
linux64平台和
gcc预处理器。
如果使用Windows,则可以在编译监视模式下检查项目。 为此,请运行
分析器附带的“
C and C ++ Compiler Monitoring UI ”实用程序。 要开始监视,请转到“
工具”菜单,然后单击“
分析文件... ”,将打开一个对话框:
单击“
开始监视 ”按钮并运行构建。 完成后,在屏幕右下角的对话框中单击“
停止监视 ”按钮:
可以在“
C and C ++ Compiler Monitoring UI ”实用程序的主窗口中查看测试结果。
您也可以从命令行运行分析。 为此,使用了实用程序CLMonitor。 您可以使用以下命令开始监视:
CLMonitor.exe monitor
组装完成后,您应该在分析模式下运行该实用程序:
CLMonitor.exe analyze -l "<path>\out.plog"
分析器将检查项目并将结果保存到
-l参数中指定的文件中。
另请参见文档部分“
PVS-Studio中的编译监视系统 ”。
处理报告
要在Linux下查看报告,您需要使用
plog-converter实用程序将通过分析器获得的文件转换为支持的格式之一。 您可以使用以下命令以HTML格式获取报告并能够查看源代码:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir
在 “
在Linux中开发C ++程序时熟悉PVS-Studio静态分析器 ”一文中更详细地描述了报告的转换。
在Windows下,还有一个
PlogConverter实用程序,可让您以类似的方式转换报告文件:
PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2
或
PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2
同样,可以使用实用工具“
C and C ++ Compiler Monitoring UI ”通过菜单
File-> Open PVS-Studio Log ...查看
plog格式的报告
。一个例子:
如有必要,您可以通过此实用程序通过“
文件”菜单将报告导出为支持的格式之一。
MISRA标准
PVS-Studio根据
CWE和
SEI CERT对警报进行分类,适用于普通应用程序的静态安全测试(
SAST )。 但是,嵌入式系统的安全要求略有不同,特别开发的
MISRA标准涵盖了这些要求。 当前版本的分析仪支持MISRA C和MISRA C ++的部分规则,可在
此处查看诊断列表,并且该列表正在不断扩展。
在检查非嵌入式项目时,通常不合理使用MISRA规则。 这是由于该标准的细节。 在大多数情况下,如果代码最初并不是按照MISRA的要求编写的,则在检查过程中会出现许多错误和无用的警告。 因此,默认情况下禁用MISRA规则。
要在Linux下启用MISRA分析,您需要使用
-a开关运行分析,并传递设置所需模式的数字参数。 此参数是位字段的组合:
-a [MODE], --analysis-mode [MODE] MODE defines the type of warnings: 1 - 64-bit errors; 2 - reserved; 4 - General Analysis; 8 - Micro-optimizations; 16 - Customers Specific Requests; 32 - MISRA. Modes can be combined by adding the values Default: 4
启动示例(包括GA和MISRA诊断程序):
pvs-studio-analyzer analyze -a 36 -o /path/report.log
使用
plog-converter时 ,还必须指出报告中应
包括 MISRA诊断:
plog-converter -a MISRA:1,2,3 -m misra ....
在Windows下,可以使用“
C and C ++ Compiler Monitoring UI ”实用程序设置对话框:
有关MISRA支持的更多详细信息,请参见“
PVS-Studio:对MISRA C和MISRA C ++编码标准的支持 ”。
结论
在本文中,我们回顾了PVS-Studio分析仪测试集中于嵌入式系统的项目的功能。 如果您需要有关如何使用分析仪的更多详细信息,建议阅读以下文章:

如果您想与讲英语的读者分享这篇文章,请使用翻译链接:Yuri Minaev。
在嵌入式系统的C和C ++开发中使用PVS-Studio静态分析器