RISC-V IDE MRS2使用笔记(九):静态代码分析

RISC-V IDE MRS2使用笔记(九):静态代码分析

今天和大家分享一个提升开发效率的功能:MRS2 V2.3.0版本新增的静态代码分析!它基于clang-tidy,能在不运行程序的情况下提前发现内存错误、并发风险和性能隐患,让代码质量变得更可靠。

使用方法:要在 MRS2 中使用静态代码分析,只需右键单击要分析的源文件或者工程,然后选择"分析代码(analyze code)"。 就可以在"输出"窗口中获得结果列表。如果没有错误或警告,它将在output窗口显示为"没有问题被发现"。

在配置界面中,MRS2 默认仅启用 "Clang Static Analyzer Checks" 系列选项。我们可通过在项目上右键点击并选择"设置分析选项(Config Analyze Options)"(如图 1 所示),对 clang-analyzer 的各项检查规则进行启用或禁用的设置。如果想要了解每个选项的详细解释可单击"Detailed Introduction"跳转至官网进行查看(https://clang.llvm.org/docs/analyzer/checkers.html)。

①clang-analyzer-core.:通用检查器,例如零除检查器、空指针解引用检查器、未初始化值使用检查器等。这些检查器必须始终开启,因为其他检查器依赖它们。
②clang-analyzer-cplusplus.
:C++ Checkers.

③clang-analyzer-deadcode.DeadStores:检查存储到变量中的值是否之后从未被读取过

④clang-analyzer-fuchsia.HandleChecker:句柄用于标识资源。与指针类似,句柄可能会发生泄漏、双重释放或释放后使用的情况。此检查旨在发现此类问题。(Fuchsia 是谷歌目前正在开发的一款基于开源能力的操作系统。该checker能够发现 Fuchsia API 各种误用情况的检查器。)

⑤clang-analyzer-nullability.:用于警告空指针传递和解引用错误。
⑥clang-analyzer-option.
:用于可移植性、性能、可选安全性和特定编码风格规则的检查器。

⑦clang-analyzer-osx.:macOS 检查器。
⑧clang-analyzer-security.
:与安全相关的检查器。

security.ArrayBound (C, C++):报告对位于所访问区域(数组、堆分配区域、字符串字面量等)起始位置之前或结束位置之后的内存的越界访问。

security.FloatLoopCounter ©:当使用浮点值作为循环计数器时发出警告。

⑨clang-analyzer-unix.: POSIX/Unix checkers.
⑩clang-analyzer-webkit.
: WebKit代码库中问题的检查器。(WebKit是一个开源的网页浏览器引擎,适用于macOS、iOS和Linux系统。)

如果想要启用除默认配置外的其他检查项,也可以在快捷设置中进行添加check选项。

更多可用检查项可以参见clang-tidy 官方文档:(https://clang.llvm.org/extra/clang-tidy/checks/list.html)

使用效果:如果直接编译这段代码,编译器可能不会给出任何警告。当把应用程序下载到目标设备上,代码会发生非法操作,在程序运行时将出现除以 0 的情况,这可能导致系统bug。

如果使用静态代码分析则会进行提示:

可以看到,静态代码分析器能够捕获这一潜在问题,并以警告的形式通知开发者:根据当前源代码,程序中很可能会发生除以 0 的错误。可以通过单机输出条目跳转到源码位置

相关推荐
测试开发-学习笔记3 小时前
Android studio安装
android·ide·android studio
ABAP-張旺4 小时前
ABAP:Visual Studio Code官方插件安装教程
ide·vscode·编辑器
凡人叶枫4 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
zh路西法6 小时前
【绕过 vscode-server】用 SSHFS SFTP 实现本地远程开发
ide·vscode·编辑器
小二·6 小时前
AI 代码审查 VSCode 插件实战
ide·人工智能·vscode
南岸的水7 小时前
BMS国标充电解析
单片机·嵌入式硬件·mcu
Yukinaaaa7 小时前
以“轮盘数组”思维彻底搞懂并实现阻塞队列
java·服务器·ide·安全·javaee·阻塞队列·轮盘数组
sramdram7 小时前
低功耗国产蓝牙芯片,蓝牙MCU方案
单片机·嵌入式硬件·mcu·蓝牙mcu·蓝牙方案
Tian_Hang7 小时前
Linux基础知识(四)
linux·ide·驱动开发·计算机视觉·硬件工程·动画
资深流水灯工程师9 小时前
PyCharm 增强插件完整安装与配置指南(PySide6 开发专用)
ide·python·pycharm