增量覆蓋率報表實現(xiàn)

最近從QA那里接收到了一個需求孤钦,是對修改過的代碼生成一個類似于Jacoco 的測試覆蓋率報表舅踪,所以在此記錄一下生成的步驟:

  • 配置Jacoco

    在JVM option中添加: -javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]即可儡率。option有很多毫别,我們這里只介紹一下我們配置的部分:

    • destfile:exec文件輸出路徑食寡,默認是jacoco.exec

    • append: 如果設置為true并且執(zhí)行數(shù)據(jù)文件已經存在,那么coverage數(shù)據(jù)將附加到現(xiàn)有文件中烛恤。如果設置為false母怜,將替換現(xiàn)有的執(zhí)行數(shù)據(jù)文件,就是每次會生成一個新的,一般是設為true缚柏,不然之前測試的coverage數(shù)據(jù)苹熏,server重啟之后會丟失。默認true

    • output: 輸出Coverage數(shù)據(jù)的方法:

      • file: 在虛擬機停止的時候會將數(shù)據(jù)寫入到destfile指定的文件币喧,我們目前指定是這個方法轨域。

      • tcpserve:代理在由address和port屬性指定的TCP端口上偵聽傳入連接。執(zhí)行數(shù)據(jù)將寫入此TCP連接

      • tcpclient:啟動時杀餐,代理連接到由address和port屬性指定的TCP端口干发。執(zhí)行數(shù)據(jù)將寫入此TCP連接。

      • none: 不產生任何輸出

    • excludes:忽略的Class列表史翘,使用冒號(:)分割枉长,并且可以使用通配符(*和?)琼讽。除性能優(yōu)化或技術特殊情況外必峰,通常不需要此選項。 如果要從報告中排除類別跨琳,請相應地配置相應的報告生成工具自点。

  • 生成Coverage Report

    這里我們使用的是jacococli.jar 生成的,文檔脉让, 需要jacoco的版本大于0.8.0桂敛, 通過命令java -jar lib/jacococli.jar report 10_QA_Jacoco/jacoco_exec/*.exec --xml ./coverage.xml --sourcefiles 10_QA_Jacoco/**/src/main/java --classfiles 10_QA_Jacoco/from_server/oocl/即可生成coverage.xml。 Options的選項可以參考下面這個列表溅潜,我們生成的是xml文件术唬,為了之后生成增量的覆蓋率做準備。

    Option Description Required Multiple
    <execfiles> list of JaCoCo *.exec files to read ?
    --classfiles location of Java class files ? ?
    --csv output file for the CSV report
    --encoding source file encoding (by default platform encoding is used)
    --help show help
    --html output directory for the HTML report
    --name name used for this report
    --quiet suppress all output on stdout
    --sourcefiles location of the source files ?
    --tabwith tab stop width for the source pages (default 4)
    --xml output file for the XML report
  • 生成增量覆蓋率報表

    這里使用了一個開源的工具diff-cover, 可以結合coverage.xml和git diff來得到新加行以及修改行的覆蓋率報表滚澜。在項目目錄下運行diff-cover coverage.xml --compare-branch=origin/tmscloud_release --html-report report.html --src-roots biz1/src/main/java biz2/src/main/java

    diff-cover 會比較當前分支和--compare-branch指定的分支從而得出修改的行粗仓,我們這里指定的release branch,從而得到上次版本之后修改的行设捐。然后結合之前生成coverage.xml. 會生成一個html到--html-report指定的文件中借浊,其中--src-roots指定源代碼的相對路徑,對于maven項目來說一定要制定到java這一層目錄萝招。命令運行完成之后會得到一個report蚂斤。里面有一個table給出了每個文件修改行的覆蓋率和未覆蓋的行,后面還會打印出未覆行的代碼槐沼。

覆蓋率占比報表

紅色未覆蓋行
  • 顯示未覆蓋行的提交信息和提交者:

    上面報告完成之后曙蒸,QA反饋說只顯示了行號捌治,沒有顯示修改行的提交信息(commit message)和提交人(committer)。所以就修改了一下diff-cover的源代碼加了一下這兩個內容纽窟。獲取修改行的提交記錄以及提交人可以使用命令git blame --incremental -L 20,+1:NtOrderUpdator.java詳細這里就不說了肖油,可以參考git的文檔git blame,這個命令會打印出以下信息:

    d4a9bda57733fdbf7af8f24607a542a6f9ab74d4 18 20 4
    author Test
    author-mail <Test@oocl.com>
    author-time 1589878340
    author-tz +0800
    committer Tony
    committer-mail <Test@oocl.com>
    committer-time 1589878340
    committer-tz +0800
    summary ST245849
    filename NtOrderUpdator.java

其中的author就是我們需要的提交者臂港,summary就是我們需要的提交信息森枪,將其解析出來并應用于我們的html報表:

image.png

其中紅色就是我們提交信息和提交人,后面緊跟著的就是對應修改行趋艘,這樣我們就可以追蹤未覆蓋的修改行對應的stroy號以及修改人疲恢。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末凶朗,一起剝皮案震驚了整個濱河市瓷胧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棚愤,老刑警劉巖搓萧,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宛畦,居然都是意外死亡瘸洛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門次和,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反肋,“玉大人,你說我怎么就攤上這事踏施∈幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵畅形,是天一觀的道長养距。 經常有香客問我,道長日熬,這世上最難降的妖魔是什么棍厌? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮竖席,結果婚禮上耘纱,老公的妹妹穿的比我還像新娘。我一直安慰自己毕荐,他們只是感情好束析,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著东跪,像睡著了一般畸陡。 火紅的嫁衣襯著肌膚如雪鹰溜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天丁恭,我揣著相機與錄音曹动,去河邊找鬼。 笑死牲览,一個胖子當著我的面吹牛墓陈,可吹牛的內容都是我干的。 我是一名探鬼主播第献,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贡必,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庸毫?” 一聲冷哼從身側響起仔拟,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎飒赃,沒想到半個月后利花,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡载佳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年炒事,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔫慧。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡挠乳,死狀恐怖,靈堂內的尸體忽然破棺而出姑躲,到底是詐尸還是另有隱情睡扬,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布肋联,位于F島的核電站威蕉,受9級特大地震影響,放射性物質發(fā)生泄漏橄仍。R本人自食惡果不足惜韧涨,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侮繁。 院中可真熱鬧虑粥,春花似錦、人聲如沸宪哩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锁孟。三九已至彬祖,卻和暖如春茁瘦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背储笑。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工甜熔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人突倍。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓腔稀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親羽历。 傳聞我的和親對象是個殘疾皇子焊虏,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355