GitLabでホストされているJenkinsがantを使って構築した、大きなJavaベースのプロジェクトがあります。ジェンキンマシンはウィンドウボックスで、SonarQubeスキャナーがインストールされています。ビルドプロセスの一環として、ジェンキンマシンはコードをスキャンし、Linuxボックスである別のSonarQubeサーバーと通信します。LinuxマシンでWindowsの行末を使用するようSonarQubeを設定できますか?
現在、私たちのgit repoはsvnから変換されたので、ウィンドウベースの行末のみを持っています。この構成では、SonarQubeはコード提出の新しい問題を検出できますが、新しい問題の行番号を検出することはできません。 GitLabでは、定期的なインラインコメントを作成するのではなく、マージリクエストに一般的なコメントを付けます。
追加ログを使用してSonarQube分析を実行したところ、検出された問題のある行と残りのファイルを表す行の文字列比較に失敗していました。
特に、検索していた文字列のように見え、文字列の先頭に改行があり、配列の文字列の最後に改行があります。
私は、テストブランチのすべての行末をUNIXスタイルの行末に変更し、Windowsボックスにauto-crlfを使用させました。これにより問題は解決され、SonarQubeは文字列と一致することができ、GitLabマージ要求で検出された問題のインラインコメントを付けました。
Unix行の終了を強制するために、すべてのファイルのすべての行を変更すると、少し侵略的です。SonarQubeがWindowsスタイルの行末を認識できるようにする設定オプションがあるかどうか、 Linuxマシンで実行していても?
ここに問題があるかどうかはわかりません。 GitHubプラグインは、問題の影響を受けた行がdiffの一部である場合にのみインラインコメントを使用します。行末を切り替えると、ファイル全体がdiffの一部となり、問題の問題が報告されることがあります。影響を受ける行がdiffの一部であることを確認した場合は、前述の余分なログ出力をいくつかの文字列比較で共有してください。いずれにしても、私はGitLabプラグインがSonarSourceではなくコミュニティによって管理されているため、ここではほとんど推測しています。 – janos