静态检查工具scan-buid简要帮助

一 安装说明

scan-build是clang源码中的静态代码分析工具,安装的时候需要注意和clang的版本要保持一致才可以,网上的有一个python版本,但是我安装后无法使用;

1.1 linux下安装

#centos 下安装 yum -y install clang-analyzer #或通过dnf安装 sudo dnf -y install clang-analyzer

二  使用说明

2.1 linux下使用说明

这个配置脚本需要在scan-build中运行是因为scan-build能通过介入到编译器来扫描你的源文件。scan-build将编译器gcc设置为analyze-cc。analyze-cc作为一个伪编译器,转发命令行参数给gcc和clang来执行静态分析。 然后执行以下命令,即可开始进行静态分析。

# 清理 需要先清理 再运行不然看不到结果
make clean
mkdir output
scan-build --use-analyzer `which clang` make

说明:

  1. --use-analyzer 指定了clang的路径

最后显示的结果是:

scan-build: 29 bugs found.
scan-build: Run 'scan-view /tmp/scan-build-2022-09-22-174727-11107-1' to examine bug reports.
scan-build: The analyzer encountered problems on some source files.
scan-build: Preprocessed versions of these sources were deposited in '/tmp/scan-build-2022-09-22-174727-11107-1/failures'.
scan-build: Please consider submitting a bug report using these files:
scan-build:   http://clang-analyzer.llvm.org/filing_bugs.html

2.2 输出结果

在/tmp/scan-build-2022-09-22-174727-11107-1/failures 目录下为输出的结果,打开上层的index.html 会显示检测出来的问题如下图,可以看到检测的内容有:

  1. 逻辑错误

  2. 未使用的读操作

  3. 内存泄露等问题 [图片] 错误位置标记的非常漂亮: [图片]

三 相关参考

https://blog.csdn.net/yk_wing4/article/details/99695102
https://joydig.com/clang-static-analyzer-usage/
https://github.com/rizsotto/scan-build
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要动态更新 grid 布局样式,可以使用 JavaScript 来修改 CSS 样式。以下是一些示例代码: 1. 通过修改 CSS 变量来更新 grid 样式: ```javascript // 获取 grid 元素 const grid = document.querySelector('.grid'); // 更新 grid 样式 grid.style.setProperty('--grid-columns', '3'); grid.style.setProperty('--grid-gap', '20px'); ``` 在 CSS 中,可以定义一个或多个 CSS 变量(也称为自定义属性),然后在 JavaScript 中使用 `setProperty()` 方法来更新这些变量的值。例如,以下是一个使用 CSS 变量来定义 grid 样式的示例: ```css .grid { display: grid; grid-template-columns: repeat(var(--grid-columns, 2), 1fr); grid-gap: var(--grid-gap, 10px); } ``` CSS 变量的默认值可以在 `var()` 函数中指定。例如,`var(--grid-columns, 2)` 表示如果 `--grid-columns` 变量未定义,则使用默认值 2。 2. 通过修改 grid 样式属性来更新 grid 样式: ```javascript // 获取 grid 元素 const grid = document.querySelector('.grid'); // 更新 grid 样式 grid.style.display = 'grid'; grid.style.gridTemplateColumns = 'repeat(3, 1fr)'; grid.style.gridGap = '20px'; ``` 在 JavaScript 中,可以使用 `style` 对象来访问和修改元素的 CSS 样式属性。例如,`grid.style.display = 'grid'` 表示将 `display` 属性设置为 `grid`。 需要注意的是,通过修改 `style` 对象来更新 CSS 样式只能修改元素的内联样式,而不能修改外部样式表中定义的样式。如果需要修改外部样式表中的样式,可以使用 `document.styleSheets` 对象来获取样式表对象,并使用 `insertRule()` 或 `deleteRule()` 方法来动态添加或删除样式规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值