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 的错误。可以通过单机输出条目跳转到源码位置

相关推荐
2601_962294611 小时前
Python开发工具哪个好?Python开发工具推荐
ide·文本编辑器·游戏开发·编程语言·python开发工具
执明wa9 小时前
Android Studio 打包 APK
android·ide·android studio
jianqiang.xue9 小时前
ESP-IDF保姆级入门23|MQTT物联网通信全解:发布订阅模式/QoS等级/遗嘱消息/主题设计/断线重连,掌握工业级标准消息通信
stm32·单片机·mcu·物联网·51单片机·iot
youcans_10 小时前
【嵌入式软件AI编程】01. 基于 STM32/Claude Code的AI编程
stm32·mcu·嵌入式·ai编程·claude code
小麦嵌入式10 小时前
FPGA入门(十一):受控线性序列机 UART 发送升级
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
小智学长 | 嵌入式10 小时前
实测GPT-6 Astra绘制硬件原理图和PCB效果分享
嵌入式·嵌入式开发·ai工具·单片机开发
jianqiang.xue10 小时前
ESP-IDF保姆级入门29|FreeRTOS任务管理与调度全解:任务创建/状态切换/优先级调度/双核负载均衡/实时性优化,掌握嵌入式多任务编程核心
stm32·单片机·mcu·物联网·51单片机·iot
好悬给我拽开线13 小时前
RoboTTT
ide·vscode·编辑器
2601_9622946114 小时前
Python工具软件开发:借助InsCode AI IDE开启智能编程新时代
ide·python·ai·开发工具·智能化编程
jianqiang.xue15 小时前
ESP-IDF保姆级入门22|WiFi联网与网络编程全解:STA/AP双模式/TCP-UDP Socket/HTTP服务端/自动重连,掌握工业级可靠网络通信
人工智能·stm32·单片机·mcu·物联网·51单片机·iot