sonarqube - Sonarcloud 没有发现明显的 C 问题
问题描述
我制作了一个非常简单的 C 文件,只是为了在使用 C 代码时测试 sonarcloud 的输出。我的整个代码是这样的:
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
for(int j = 0; j < 100; j++) {
void* unreleasedMemory = malloc(1024);
printf("Address: %p\n", unreleasedMemory);
}
printf("Uninitialized i is: %d", i);
return 0;
}
当我在 sonarcloud 上启动一个新项目并同时发出 build-wrapper 和 sonar-scanner 命令时,如下所示:
build-wrapper-macosx-x86 --out-dir bw-output cmake .
在那之后:
sonar-scanner \
-Dsonar.projectKey=ctest \
-Dsonar.organization=<orgname> \
-Dsonar.sources=. \
-Dsonar.cfamily.build-wrapper-output=bw-output \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.login=<tokenvalue>
两个参数的输出看起来都很好。不幸的是,它没有检测到这些相当明显的错误:
我做错了什么所以 sonarcloud 会接他们?
解决方案
引用https://docs.sonarqube.org/display/PLUG/Building+on+Mac+OS+X:
将 Build Wrapper 的执行添加为您用于构建项目的常用构建命令的前缀(下面的示例使用 xcodebuild,但可以使用任何执行完整构建的构建工具)
换句话说:所有应该分析的文件都必须在build-wrapper
. 这是必需的,因为build-wrapper
监视编译器调用以收集有关在您的项目中编译哪些文件以及使用哪些选项的信息,然后此信息用于在执行sonar-scanner
.
我严重怀疑您执行cmake .
编译的执行main.c
- 它只是生成生成文件,因此这就是为什么main.c
实际上没有正确分析。
执行
cmake .
build-wrapper-macosx-x86 --out-dir bw-output make clean all
然后执行sonar-scanner
with-Dsonar.cfamily.build-wrapper-output=bw-output
会产生所需的结果:
推荐阅读
- swiftui - SwiftUI 符合 Hashable
- c - 如何在 C 中保留输入字符的大小写?
- string - 如何使用盒子
作为带有 &str 键的哈希图的查找键? - android - 尝试在重新创建 RecyclerView 时设置它的滚动状态,但 Kotlin 说我不能,因为 setter 是公共的......?
- julia - 如何在 Julia 中保留向量的值
- python - 为什么列表上的 os.path.join() 和列表上的 os.path.sep.join() 在功能上不相同?
- swift - 根据温度关闭/打开恒温器。以及是否下雨
- c# - 按位将 long 解压缩为两个数字
- c# - Xamarin 页面构造 XML 和背后的代码
- java - Java 从文件中读取“线程'main'中的异常”错误