2017-02-09 110 views
3

我一直在努力尋找一個正常表達式,它可以在「CI/CD管道」頁面上的「測試覆蓋率解析」輸入中工作。它不利於這些示例顯示不一致的示例,即一些轉義括號和其他不相關的示例,即一些轉義括號和其他不相關的示例,即一些轉義括號和其他不相關的示例,即一些轉義括號和其他不相關的示例。Gitlab CI的正則表達式測試覆蓋率解析

CI徽章:

![coverage](https://gitlab.com/mycompany/master/badges/master/coverage.svg?job=coverage) 

輸出文本:

Unit test coverage: 
    10.01% blocks 
    10.01% lines 

到目前爲止已經試過:(加斜線簡單地在前方或正則表達式表示的空間)

/ \(\d+\.\d+\%\) blocks/ 
/(\d+\.\d+\%) blocks/ 
/(\d+\.\d+%) blocks/ 
/(\d+\.\d+)% blocks/ 

回答

1

這正則表達式應該抓住塊的覆蓋範圍:

^\s*(\d+(?:\.\d+)?%)\s*blocks 

如果要搶行,而不是覆蓋然後使用此:

^\s*(\d+(?:\.\d+)?%)\s*lines 

GitLab增加了領先,並自動尾隨/所以你不需要將其添加到您的正則表達式。

以供將來參考,GitLab用Ruby編寫的,所以你可以在rubular.com

+0

我認爲你可以使它更靈活一點提高了一點 - 匹配任何空白,而不僅僅是空間,使空白可選的(「塊」或「線」的關鍵字是最重要的),轉義小數點和匹配百分比顯示無小數位。 http://rubular.com/r/7m5Z48JRcQ – tmt

+0

@tmt我已經更新了我的答案以使用您的一些建議。 – BrokenBinary

+0

這個正則表達式不適合我。具體是什麼應該被捕獲?它應該是小數,即「10.01」,還是百分比,即「10.01%」或更多? @BrokenBinary提供的正則表達式有多個捕獲。 – Dan

0

測試Ruby的正則表達式在此問題是,覆蓋URL查詢「?工作=覆蓋」是不正確的。至於正則表達式,我用:

\W(\d+(?:\.\d+)%)\sblocks