0

コードレビューにソナーfindbugを使用しているときに、例外がスローされ、一部のクラスが欠落していると主張します。

いくつかの調査の結果、プロジェクトのビルドに必要な jar を、ソナーで使用するために pom.xml に含める必要があることが明らかになりました。

それを行うには、ソナーの公式 Web サイトの提案、依存関係の追加、com.opensymphony xwork-core 2.1.6 system ${basedir}/.../xwork-core.jar

ただし、私にとっては、常に機能しているとは限りません。

私はWindowsを使用していますが、特にシステムパスの設定方法を教えてください。

プロジェクトの 1 つのモジュールの pom.xml を次に示します。

<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>DB</groupId>
  <artifactId>プロジェクト1</artifactId>
  <name>プロジェクト1</name>
  <バージョン>1.0</バージョン>
  <依存関係>
    <依存関係>
        <groupId>com.opensymphony</groupId>
        <artifactId>xwork-core</artifactId>
        <version>2.1.6</version><!-- .m2 フォルダ、ローカル リポジトリにインストールし、参照 -->
    </依存>
    <依存関係>  
      <groupId>dep</groupId>
      <artifactId>dep1</artifactId>
      <version>1.0</version> <scope>システム</scope>
    <systemPath>${basedir}/lib//asn.jar</systemPath>    
    </依存>  
  </依存関係>
  <ビルド>
        <sourceDirectory>src</sourceDirectory>
        <outputDirectory>ビルド先/クラス</outputDirectory>
        <プラグイン>
           <プラグイン>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <構成>
                  <ソース>1.5</ソース>
                  <ターゲット>1.5</ターゲット>
                  <除く>
                      <除外>**/*.*</除外>
                  </除外>
              </設定>
           </プラグイン>
        </プラグイン>
  </ビルド>
  <プロパティ>
    <sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>
  </プロパティ>
</プロジェクト>

ありがとう、ジャッキー

4

2 に答える 2

1

あなたのプロジェクトはすでに Maven プロジェクトですか、それとも ant やその他のツールでコンパイルしてから、それに対してソナーを実行しようとしていますか? Sonar Light モードは、非常に複雑なプロジェクトでは扱いにくい場合があります。マルチモジュール プロジェクトがある場合は、ソナーのローカル コピーの下で動作する最も単純なプロジェクトを取得してから、さらにモジュールを追加する方向に取り組みます。

さらに、${basedir} からステップアップしない別のディレクトリにファイルをローカルにコピーしてみます。それが役立つかどうかを確認してください。したがって、 ${basedir}/lib/xwork-core.jar のようなものです。

おそらく、Sonar 分析の場合、別のタスクで必要なライブラリを適切にアクセスできる一時フォルダーにコピーし、分析が完了したらそれらを削除することができます。

于 2010-12-27T19:20:53.527 に答える
0

私は問題を発見しました。ソナーの公式ドキュメントは実際には間違っています。「mvn sonar:sonar」は maven sonar プラグイン 2.0 ベータ版を呼び出しますが、これはライブラリ jar の依存関係を有効にしません。代わりに、「mvn sonar3:sonar」を呼び出し、最新バージョンの maven sonar プラグイン 2.4.1 を呼び出して動作します。

于 2010-12-28T09:22:12.663 に答える