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

相关推荐
Eason_Lou6 小时前
webstorm开发vue项目快捷跳转到vue文件
ide·vue.js·webstorm
猫头虎14 小时前
Claude Code 永动机:ralph-loop 无限循环迭代插件详解(安装 / 原理 / 最佳实践 / 避坑)
ide·人工智能·langchain·开源·编辑器·aigc·编程技术
我命由我1234515 小时前
Android Studio - Android Studio 去除 import 的未使用的类
android·java·ide·学习·java-ee·android studio·学习方法
hi0_616 小时前
vibe coding 开发软件(一) 模型选择和agent简单使用
ide·个人开发·visual studio
惊讶的猫17 小时前
vscode+conda
ide·vscode·conda
谧小夜17 小时前
Visual Studio Code中实现Go语言自动导包教程
ide·vscode·golang
林_学18 小时前
扔掉了本地 IDE,开发部署只要 3 分钟。
ide
白露与泡影18 小时前
放弃 IntelliJ IDEA,转 VS Code 了。。
java·ide·intellij-idea
TT哇18 小时前
基础的IDEA基本使用,如:debug流程、常用快捷键
java·ide·intellij-idea
Motion_zq18 小时前
vscode使用i18n-ally插件,实现自动翻译(配置百度key)
ide·vscode·机器翻译