SonarQube/SonarLint を、約 40 のプロジェクトを持つかなり巨大な C# ソリューションで使用したいと考えています (C++ ソリューションは、後で提供されることを願っています)。ただし、VS 統合には苦労しています。問題は次のとおりです。
- SonarQube サーバーで品質プロファイルを定義し、ソリューションをそのプロファイルにバインドしました。その結果、SonarLint はプロファイルを
.ruleset
ソリューション ファイルとして受け取り、一連のファイルを作成します。- バインディング構成 (
.sqconfig
) (フォルダー<solution dir>/SonarQube
) - ソリューション ルールセット (フォルダ
<solution dir>/SonarQube
) - プロジェクト レベルでソリューション ルールセットを調整できるプロジェクト ルールセット ファイル (プロジェクト フォルダーごとに 1 つ) (素晴らしい機能であり、(私たちにとって) 重要な機能です)
- バインディング構成 (
- ここで、バインディングとルールセットを開発チーム全体で共有したいと思います。したがって、上記のすべてのファイルをチェックインしました。ただし、これには重大な欠点があります。SonarLint が SonarQube サーバーから品質プロファイルの変更を受け取るたびに、大量の変更が送信されます。これらの変更を調査すると、ほとんどの (すべてではないにしても) ファイルはまったく変更されておらず、変更されているだけのように見えます。これは私たちにとって致命的です。なぜなら、私たちは定期的に発信変更の「汚染された」リストを扱いたくないからです。
- これはかなり簡単に再現できることに注意してください。
- ソリューションを品質プロファイルにバインド
- 新規および変更されたすべてのファイルをチェックインする
- SonarQube 接続を右クリックし、[更新] を選択します。
- => ソリューションをバインドすることによって作成されたすべてのルールセット ファイルは発信変更としてマークされます (実際の変更を含むものはありません)。チーム エクスプローラー ビューを更新しても役に立ちません。
- これはかなり簡単に再現できることに注意してください。
- したがって、SonarLint が作成したすべてのファイルを TFS から除外できると考えました。これは (私の理解では) ソリューション ルールセットには問題ないはずです (そのルールセットは SonarQube サーバーと自動的に同期されるため)。ただし、VS プロジェクトに関して SonarQube サーバー上の品質プロファイルを調整することはできないように見えるため、VS プロジェクト固有のルールセットを使用する機能が失われます (または手動でコピーする必要があります)。
したがって、私の質問は次のとおりです。SonarLint と TFS をバージョン管理システムとして使用する場合、開発チーム間で SonarQube ルールセットを共有するためのベスト プラクティスは何ですか?