覆蓋率平台(5)- 增量代碼覆蓋率


前言:

如前面一篇介紹的,增量代碼覆蓋率用的 diff-cover插件。但是展示效果不好,而且還要先生成全量的xml報告;展示效果,與全量報告不一樣,在平台上的展示效果看起來很怪異。繞了一大圈,還是要改造jacoco。

實現:

俗話說,站在巨人的肩膀上,才能站得高,望得遠,跑得快!直接拿 https://github.com/fang-yan-peng/diff-jacoco 進行改造

同時參考:

1.jacoco-實戰篇-增量覆蓋率

2.接口測試 服務端代碼覆蓋率統計平台實現 (全量、變更)

 

改造點(前2點屬於bug修復):

1.增加git用戶名、密碼,解決git diff無權限問題。此處硬編碼,有追求的同學可自行抽取

 

 2.解決報錯 Duplicate key org.jacoco.core.internal.diff.MethodInfo。用重載的方法

 

 3.入庫有問題,直接干掉db相關代碼。覆蓋率數據,直接由平台入庫

 4.干掉dump二進制文件的代碼。自行生成exec文件,再傳入路徑

   5.報告:只顯示/統計,有變更的類

5.1)org.jacoco.core.analysis.Analyzer 增加如下方法

    /**
     *  add by danny.yao 2020/08/13,只分析有變化的代碼
     * @param file
     *         classes 路徑
     * @throws IOException
     */
    public void analyzeClass(final File file) throws IOException {
        if (file.isDirectory()) {
            for (final File f : file.listFiles()) {
                analyzeClass(f);
            }
        } else {
            final InputStream in = new FileInputStream(file);
            try {
                analyzeClass(in, file.getPath());
            } finally {
                in.close();
            }
        }
    }

5.2)org.jacoco.startup.ReportGenerator的方法 analyzeStructure 中,改為調用上面的新方法

 

 5.3)org.jacoco.report.internal.html.page.SourceHighlighter 整個文件還原為 jacoco的官方源碼,同時把測試類 SourceHighlighterTest.java 中報錯代碼注釋掉

 

報告效果(同一個服務分支,增量/全量對比):

1.全量

 

2.增量

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM