2

私は C# プロジェクト (プラグインは C# Core と C# FX Cop のみ) で Sonar 3.2 を試し、Simple Java Runner を使用しています。

1 つのプロジェクトのソリューションでは問題なく動作しましたが、2 つのプロジェクトのソリューションを使用して分析しようとすると、常に次のエラーが発生します。

    17:01:41.775 INFO .sbbProjectModule - ------------- Project1 を分析中
    17:01:42.055 INFO .sbProfileProvider - 選択された品質プロファイル: [名前 = カスタム C#、言語 = cs]
    17:01:42.075 INFO nPluginsConfigurator - Maven プラグインの構成...
    17:01:42.125 INFO org.sonar.INFO - 以前の分析との比較
    17:01:42.155 INFO org.sonar.INFO - 5 日間の比較 (2012-09-27)
    17:01:42.175 INFO org.sonar.INFO - 30 日間の比較 (2012-09-02)
    17:01:42.215 情報 .bpSensorsExecutor - 初期化子 ProjectFileSystemLogger...
    17:01:42.215 INFO jectFileSystemLogger - ソース ディレクトリ:
    17:01:42.215 INFO jectFileSystemLogger - $(ソリューション フォルダー)\Project1
    17:01:42.215 INFO .bpSensorsExecutor - 初期化子 ProjectFileSystemLogger が完了しました: 0 ミリ秒
    17:01:42.225 情報 .bpSensorsExecutor - 初期化子 CSharpProjectInitializer...
    17:01:42.225 INFO .bpSensorsExecutor - 初期化子 CSharpProjectInitializer が完了しました: 0 ミリ秒
    17:01:42.255 INFO ospcpd.CpdSensor - 重複コードの検出は C# ではサポートされていません。
    合計時間: 8.442 秒
    最終記憶: 5M/118M
    スレッド「メイン」org.sonar.runner.RunnerException の例外: java.lang.NullPointerException
        org.sonar.runner.Runner.delegateExecution (Runner.java:288) で
        org.sonar.runner.Runner.execute (Runner.java:151) で
        org.sonar.runner.Main.execute (Main.java:84) で
        org.sonar.runner.Main.main (Main.java:56) で
    原因: java.lang.NullPointerException
        org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.assembliesFound (AbstractRegularCSharpSensor.java:101) で
        org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.shouldExecuteOnProject (AbstractRegularCSharpSensor.java:81) で
        org.sonar.plugins.csharp.api.sensor.AbstractRuleBasedCSharpSensor.shouldExecuteOnProject (AbstractRuleBasedCSharpSensor.java:48) で
        org.sonar.api.batch.BatchExtensionDictionnary.shouldKeep (BatchExtensionDictionnary.java:109) で
        org.sonar.api.batch.BatchExtensionDictionnary.getFilteredExtensions (BatchExtensionDictionnary.java:99) で
        org.sonar.api.batch.BatchExtensionDictionnary.select (BatchExtensionDictionnary.java:57) で
        org.sonar.batch.phases.SensorsExecutor.execute (SensorsExecutor.java:57) で
        org.sonar.batch.phases.Phases.execute (Phases.java:93) で
        org.sonar.batch.bootstrap.ProjectModule.doStart (ProjectModule.java:139) で
        org.sonar.batch.bootstrap.Module.start (Module.java:83) で
        org.sonar.batch.bootstrap.BatchModule.analyze (BatchModule.java:131) で
        org.sonar.batch.bootstrap.BatchModule.analyze (BatchModule.java:126) で
        org.sonar.batch.bootstrap.BatchModule.doStart (BatchModule.java:121) で
        org.sonar.batch.bootstrap.Module.start (Module.java:83) で
        org.sonar.batch.bootstrap.BootstrapModule.doStart (BootstrapModule.java:121) で
        org.sonar.batch.bootstrap.Module.start (Module.java:83) で
        org.sonar.batch.Batch.execute (Batch.java:104) で
        org.sonar.runner.internal.batch.Launcher.executeBatch (Launcher.java:69) で
        org.sonar.runner.internal.batch.Launcher.execute (Launcher.java:61) で
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
        sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で
        sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で
        java.lang.reflect.Method.invoke (不明なソース) で
        org.sonar.runner.Runner.delegateExecution (Runner.java:285) で
    ... 3 つ以上

ソリューション フォルダーには、次の sonar-project.properties が含まれています。

# Project identification
sonar.projectKey=com.project.btg
sonar.projectVersion=1.0
sonar.projectName=BTG

# Info required for Sonar
sonar.sources=.
sonar.language=cs

sonar.dotnet.visualstudio.solution.file=Sonar.project.sln
sonar.dotnet.buildPlatform=x86
sonar.dotnet.buildConfiguration=Debug

sonar.modules=Project1,Project2

#modules specific configuration
Project1:sonar.sources=.\Project1
Project1:sonar.projectName=Project 1

Project2:sonar.sources=.\Project2
Project2:sonar.sources=Project 2

ソリューションには、この 2 つのプロジェクトしかありません。

各プロジェクトの sonar-project.properties にモジュール構成を追加しようとしました:

# Project identification
sonar.projectName=Project 1

私が使用した単一のプロジェクトでは、次のものがありました。

# Project identification
sonar.projectKey=com.Project1
sonar.projectVersion=1.0
sonar.projectName=Project 1

# Info required for Sonar
sonar.sources=.
sonar.language=cs

非常に単純なものが欠けているように感じますが、これに関する情報はあまり見つかりませんでした。

誰かがこれで私を助けることができるなら、私は追加の質問があります: C++ と C# プロジェクトのハイブリッド ソリューションを分析できますか?

ありがとう

4

1 に答える 1

4

マルチモジュールのサポートは C# プラグインに組み込まれているため、指定する必要はありません (すべきではありません)。

sonar.modules=Project1,Project2

#modules specific configuration
Project1:sonar.sources=.\Project1
Project1:sonar.projectName=Project 1

Project2:sonar.sources=.\Project2
Project2:sonar.sources=Project 2

、各モジュール内に「sonar-project.properties」を追加することもありません。

C# プラグインは、SLN ファイルに依存してモジュールを自動的に検出します。サンプル アプリケーションを見て、Maven POM を単一の「sonar-project.properties」ファイルに置き換えてください。

于 2012-10-03T06:39:54.357 に答える