1

私たちのプロジェクトは現在、依存関係の管理に Ivy を使用しています。Hudson ビルド サーバーを Sonar と統合したいと考えています。これまでのところ、これは比較的単純で簡単な作業でした。もちろん、Sonar Lite モードで実行するように Sonar をセットアップしました (Maven プロジェクトではないため)。

残念ながら、Sonar バイトコード スキャンが開始されると、次のような多くの結果が得られます。

[警告] ClassLoader からクラス 'XXX' にアクセスできません。[警告] ClassLoader からクラス 'XXX' にアクセスできません。... [警告] クラス 'XXX' は ClassLoader からアクセスできません。

これは、依存関係が Sonar Lite のダミー POM ファイルで定義されていないためであり、分析中に走査するためにライブラリが選択されていないことが原因であると理解しています。

Sonarのインストール ドキュメントには、これを修正するには、Maven pom ファイルを介して依存関係を aux クラスパスに追加する必要があることが記載されています。ただし、これらの依存関係をアイビーの依存関係 (何百もあります) と簡単に同期する方法はないようです。明らかに、ダミーの pom ファイルでそれぞれを複製する必要なく、依存関係を定義する方法を探しています。

Sonar codehaus サイトで提起されたいくつかの問題(これなど) は、私が探しているのと同じ機能の周りで踊っているように見えますが、合理的な解決策を提供しているようには見えません (何かが欠けている場合を除きます)。

誰かが以前にこの状況に対処し、合理的に良い解決策を持っていますか?

ありがとう

4

2 に答える 2

2

Sonar lite メカニズムは、Sonar 2.6 で廃止されたようです。

Sonar を非 Maven ビルドと統合する 2 つの新しい方法:

ANT タスクは、ビルドおよびランタイム クラスパスの ivy の制御と組み合わせるために調整されています (構成を使用)。

<!--
  Uses ivy to download dependencies
  -->

  <target name="dependencies" description="Resolve project dependencies and set classpaths">
    <ivy:resolve/>
    <ivy:cachepath pathid="compile.path"  conf="compile"/>
    <ivy:cachepath pathid="runtime.path"  conf="runtime"/>
    <ivy:cachepath pathid="test.path"     conf="test"/>
    <ivy:cachepath pathid="anttasks.path" conf="anttasks"/>
  </target>

  <!--
  Perform source code analysis
  -->

  <target name="sonar-init" description="Declare sonar ant task">
    <taskdef uri="antlib:org.sonar.ant" 
             resource="org/sonar/ant/antlib.xml" 
             classpathref="anttasks.path"/>
  </target>

  <target name="sonar" depends="test,sonar-init" description="Run the Sonar code analysis tool">
    <ivy:info/>

    <sonar:sonar workDir="${sonar.workDir}" key="${ivy.organisation}:${ivy.module}" version="${ivy.revision}">
      <!-- Project layout -->
      <sources>
        <path location="${build.srcDir}"/>
      </sources>
      <tests>
        <path location="${build.testDir}"/>
      </tests>
      <binaries>
        <path location="${build.outputDir}"/>
        <path location="${build.testOutputDir}"/>
      </binaries>
      <libraries>
        <path refid="test.path"/>
      </libraries>
      <!-- Additional Sonar configuration -->
      <property key="sonar.java.source" value="1.5"/>
      <property key="sonar.java.target" value="1.5"/>
    </sonar:sonar>
  </target>

さらに、ivy infoタスクを使用して Sonar キーとバージョンを設定する方法にも注意してください。

于 2011-02-25T10:08:33.013 に答える
1

ivy.xml をダミーの pom.xml に XSL 変換してみましたか?

于 2011-02-08T06:11:17.180 に答える