我有一个基于Java的大型项目,托管在GitLab上,通过Jenkins使用ant构建。 jenkins机器是一个Windows盒子,并安装了SonarQube扫描仪。作为构建过程的一部分,jenkins机器扫描代码,并与单独的SonarQube服务器进行通信,这是一个linux盒子。
目前我们的git repo只有基于Windows的行结尾,因为它是从svn转换而来的。在此配置下,SonarQube可以检测代码提交中的新问题,但无法检测新问题的行号。在GitLab中,它会对合并请求附加一般注释,而不是定期进行内嵌注释。
我使用额外的日志记录运行SonarQube分析,发现它在检测到问题的行与表示文件其余部分的行数组之间进行字符串比较失败。
特别是,它看起来像它正在搜索的字符串,在字符串的开头有一个新行,而数组中的字符串在字符串的末尾有一个新行。
在预感中,我将测试分支中的所有行结尾切换为unix样式的行结尾,并使windows框使用auto-crlf。这解决了这个问题,SonarQube能够匹配字符串,并为在GitLab合并请求中检测到的问题提供内联注释。
由于改变每个文件的每一行以强制Unix行结尾比我们想要的更具侵略性,我想知道是否有一些配置选项我可能会丢失,这将允许SonarQube识别窗口样式的行结尾,甚至什么时候在Linux机器上运行?
答案 0 :(得分:0)
原来这是GitLab插件的一个已知问题,而不是 SonarQube服务器。该问题已在最新的代码库中修复,但不是当前稳定版本的一部分。
详细信息:https://github.com/gabrie-allaigre/sonar-gitlab-plugin/issues/35