SonarQube

SECoder使用SonarQube对源代码进行静态分析。 SonarQube的分析过程定义在.gitlab-ci.yml的测试阶段最后,分析过程中,分析工具将从代码及版本控制工具中搜集数据,因此,请确保分析目录包含.git文件夹、源代码、测试覆盖报告。 对于需要编译的语言,如Java,SonarQube还要求对编译结果进行分析,二进制文件路径和更多的配置请参考样例仓库在sonar-project.properties文件中列出。

SonarQube的分析结果主要包括如下内容。

Issue

SonarQube针对不同语言总结了许多不符合编程规范的代码异味,以及可能引入安全隐患、或是不利于维护的代码模式。 针对每一个Issue,SonarQube评估了修复的预估时间供参考。

测试

SonarQube并不执行测试,而是在分析阶段搜集单元测试和覆盖率报告。 测试和覆盖率报告的生成路径需要在sonar-project.properties文件中指出,不同语言、不同的报告生成工具由于报告格式不同,需要使用不同的参数。

代码重复

SonarQube统计了一个仓库中代码重复的情况,包括重复的代码行数、代码片段、存在重复的文件。

复杂度

SonarQube计算了各函数、类、文件的圈复杂度,即程序运行通路的数量。 复杂度越高,程序越可能出错,维护起来也越麻烦。