我有一個很大的基於java的項目,託管在GitLab上,它是通過使用ant的Jenkins構建的。詹金斯機器是一個窗口盒子,並安裝了SonarQube掃描儀。作爲構建過程的一部分,jenkins機器掃描代碼,並與獨立的SonarQube服務器進行通信,該服務器是一個Linux機器。可以將SonarQube配置爲在Linux機器上使用Windows行結束符?
目前我們的git repo只有基於窗口的行結尾,因爲它是從svn轉換而來的。在此配置下,SonarQube可以在代碼提交中檢測到新問題,但無法檢測新問題的行號。在GitLab中,它對合並請求附加了一般性評論,而不是進行常規的在線評論。
我用額外的日誌記錄運行SonarQube分析,發現它在檢測到問題的行和表示文件其餘部分的行之間進行字符串比較失敗。
特別是,它看起來像它正在搜索的字符串,在字符串的開頭有一個新的行,而數組中的字符串在字符串的末尾有一個新行。
在預感上,我將測試分支中的所有行結束切換爲unix樣式的行結束符,並使windows盒使用auto-crlf。這解決了問題,SonarQube能夠匹配這些字符串,並對它在GitLab合併請求中檢測到的問題給出了一個在線評論。
改以來的所有文件強制Unix行結尾的每一行是一個比較侵入那麼我們想,我不知道是否有一些配置選項,我可能會丟失,將允許SonarQube認識到windows風格的行結束符,即使在linux機器上運行?
我不確定這裏有什麼問題。只有當受到問題影響的行是diff的一部分時,GitHub插件纔會使用內聯註釋。當您切換行尾時,整個文件將成爲diff的一部分,這可以解釋報告中存在問題。如果您確認受影響的行是diff的一部分,那麼請分享您提到的一些字符串比較的額外日誌記錄輸出。無論如何,我主要是在猜測這裏的事情,因爲GitLab插件是由社區管理的,而不是由SonarSource管理的。 – janos