1

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
4

2 に答える 2

1
  • 最初に、プロジェクト固有の設定を sonar-runner.properties ファイルに入れるべきではありません。ソリューション内に「sonar-project.properties」ファイルを作成し、そこに保持する必要があります。

  • 次に、この「sonar-project.properties」ファイルで、「sonar.sources」を「.」に設定する必要があります。そして、「sonar.tests」も「sonar.binaries」も持つべきではありません

これはすべてドキュメントで詳しく説明されており、サンプル プロジェクトに適用されています。

于 2013-02-20T09:54:39.327 に答える
0

私はちょうど解決策を見つけました。

Fabrice - Sonar Team は、FxCop と Gendarme は動作するアセンブリがないため、正しく動作しないという考えを私にもたらしました。

ここで私は魂を見つけました。FxCop は Debug フォルダーでアセンブリを検索するだけで、リリース フォルダーにアセンブリがあったため、正しく動作しませんでした。だから私はそれを解決するためにデバッグ(またはsonar.dotnet.buildConfigurationsプロパティ)に戻しました

于 2013-02-20T11:50:52.417 に答える