軟件測(cè)試 | Sonarqube中的覆蓋率分析
導(dǎo)入覆蓋率
sonarqube 可以分析 jacoco 的 exec 文件與 xml 文件,并自動(dòng)導(dǎo)入覆蓋率。exec 文件的分析后續(xù)會(huì)放棄 支持,主支持 xml 文件的分析。
限定范圍的代碼覆蓋

可以通過(guò)如下參數(shù)限定要分析代碼的范圍,通常是指明要覆蓋的 package 范圍
sonar.sources
sonar.inclusions
新增代碼覆蓋率
sonarqube 可以智能分析新老版本之間的新增代碼的覆蓋率,這點(diǎn)非常不錯(cuò),以前一些分析代碼 diff 的 工作就節(jié)省了。他的代碼分析也比較智能,簡(jiǎn)單的換行并不會(huì)干擾代碼 diff 的分析范圍。

通用覆蓋率數(shù)據(jù)
sonarqube 支持兩種通用的測(cè)試數(shù)據(jù)導(dǎo)入
通用覆蓋率數(shù)據(jù):sonar.coverageReportPaths
通用測(cè)試執(zhí)行數(shù)據(jù):sonar.testExecutionReportPaths
這樣方便與各種框架進(jìn)行集成,也方便測(cè)試工程師二次定制。
通用測(cè)試數(shù)據(jù)模板
通用覆蓋率數(shù)據(jù)模板

在 sonarqube 的 scanner 分析中,加入對(duì)應(yīng)的配置參數(shù)即可導(dǎo)入通用測(cè)試數(shù)據(jù)。
通用測(cè)試數(shù)據(jù)導(dǎo)入的常見(jiàn)用途
將各種測(cè)試工具的測(cè)試報(bào)告轉(zhuǎn)換為 sonarqube 支持的格式從而導(dǎo)入平臺(tái)
將各種覆蓋率工具的覆蓋率報(bào)告轉(zhuǎn)換為標(biāo)準(zhǔn)格式導(dǎo)入平臺(tái)
根據(jù)需求對(duì)差異 diff 覆蓋率進(jìn)行定制,比如除了對(duì)新增代碼做覆蓋,還要對(duì)使用了新增代碼的依賴 代碼也做分析
代碼diff方法
代碼的 diff 分析是一個(gè)比較大的話題,diff 只是對(duì)代碼的最簡(jiǎn)單的一個(gè)分析策略,要想深入的理解代 碼,我們還需要更進(jìn)一步的分析代碼的調(diào)用鏈。我們先看最簡(jiǎn)單的代碼 diff 分析工具。
代碼 diff 分析工具
JGit:git 分析工具
JavaParser:語(yǔ)法分析
ASM:讀取字節(jié)碼
javap:jdk 自帶字節(jié)碼分析工具