Sonarqube系列04:Android、C++ 代码质量扫描

扫描所需前置条件( Token 、项目)和报告解读参照 Sonarqube系列03:Java 代码质量扫描

1. Android 代码扫描

Android 项目使用 Kotlin 和 Java 编程语言进行开发,这两种语言 Soanrqube 社区版默认支持,所以无需额外配置。
Android 项目工程化使用 Gradle,对应 Scanner 选用 SonarScanner for Gradle

1.1. 扫描规则

采用社区版默认规则。

1.2. 扫描配置

主项目 build.gradle 下添加 SonarScanner for Gradle 插件,并配置插件应用范围:

1
2
3
4
5
6
7
8
9
10
buildscript {
dependencies {
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
}
}
subprojects {
apply plugin: 'org.sonarqube'
sonarqube {
}
}

1.3. 分析代码

Gradle 使用 Gradle Warpper 可以避免不同项目版本冲突,JDK 版本取决于具体项目需求。执行分析脚本如下:

1
2
3
4
5
# 修改执行权限
chmod u+x ./gradlew

# 执行代码扫描
./gradlew -Dsonar.host.url=http://192.168.1.2 -Dsonar.login=tokenvalue -Dsonar.projectKey=myproject -Dsonar.branch.name=develop  sonarqube

2. C++ 代码扫描

Sonarqube 社区版不支持 C++ 编程语言的扫描,可以通过下图流程借助开源插件和 CppCheck (C++语言常用 linter) 实现支持。

流程说明:

  1. CppCheck 对 C++代码分析生成 xml 报告;
  2. 通过 Sonar Scanner 将 xml 报告上传至 Sonarqube Server ;
  3. 服务端 Sonarqube server 安装 sonar-cxx 插件,对接收的 CppCheck xml 报告进行解析成标准报告。

2.1. 配置 sonar-cxx 插件

sonar-cxx 插件下载地址 在这里,下载后将插件上传至 Soanrbue Server 安装目录下 extensions/plugins 文件夹,重启即可。

2.2. 分析代码

1
2
3
4
5
# cppcheck 生成xml报告
cppcheck -iinclude --xml --xml-version=2 --enable=all ./ 2> cppcheck-report.xml

# 使用sonar-scanner
sonar-scanner -Dsonar.host.url=http://192.168.1.2 -Dsonar.login=tokenvalue -Dsonar.projectKey=myproject -Dsonar.branch.name=develop -Dsonar.language=cxx -Dsonar.cxx.file.suffixes=.cc,.cpp,.cxx,.c++,.hh,.hpp,.hxx,.h++,.ipp -Dsonar.cxx.cppcheck.reportPaths=cppcheck-report.xml

3. 参考资料