C# プロジェクトを分析するために Sonar を準備しました。sonar と sonar-runner をインストールし、C# プラグイン (.NET Core、C# Core、FxCop、Gendarme、Gallio、OpenCover、StyleCop) も構成しました。
これまでのところ、すべてが正常に機能しています。Sonar では、コード統計 (LOC など) が表示され、コード違反も表示されます。コードカバレッジはありませんが、テストがないので問題ありません。
問題は、Stylecop に関する違反のみが表示されるため、コード スタイルの問題が表示されるだけです。しかし、私のアプリケーションには、FxCop や他のプラグインによって検出されるべき他の違反もあるはずです。
この図では、StyleCop からの違反を示していることがわかります。私の違反はすべて StyleCop からのものです。
Sonar C#のドキュメントで、分析は成功するが、アセンブリの方向が間違っているために、違反がほとんど検出されないことがあると読みました。私はあなたに私の sonar-runner.properties を見せます、多分ここに私の問題の原因があります:
#----- Default Sonar server
#sonar.host.url=http://localhost:9000
#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#sonar.jdbc.driver=org.postgresql.Driver
#----- MySQL
#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
#sonar.jdbc.driver=com.mysql.jdbc.Driver
#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#sonar.jdbc.driver=oracle.jdbc.driver.OracleDriver
#----- Global database settings
#sonar.jdbc.username=sonar
#sonar.jdbc.password=sonar
#----- Default directory layout
sonar.sources=src
sonar.tests=src
sonar.binaries=src
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
アプリケーション構造もリストしたいと思います。
-->ProjectMainFolder
-->Project.sln
-->sonar-project.properties
-->Project1Folder
-->bin
-->object
-->Properties
-->Project1.csproj
-->Project1Main.cs
-->Project2Folder
-->bin
-->object
-->Properties
-->Project2.csproj
-->Project2Main.cs
もう一度質問します。StyleCop 違反のみが表示され、FxCop や Gendarme などからの違反が表示されないのはなぜですか?
また、自分の sonar-project.properties を追加したいと思います:
# optional description
sonar.projectDescription=Project description
# Project identification
sonar.projectKey=Vendor:Project
sonar.projectVersion= 1.0
sonar.projectName= Project
# Info required for Sonar
sources=.
sonar.language=cs
sonar.sourceEncoding=UTF-8
#Core C# Settings
sonar.dotnet.visualstudio.solution.file=Project.sln