6

私はJenkins(Hudson)CIを使用しており、毎晩、Checkstyleレポート用のCodesnifferなど、レポート用の多数のツールを使用してコードを分析しています。私はディレクトリを無視したくありません./framework/*が、パラメータを使った努力に関係なく、ディレクトリを含めることを主張し--ignoreます。

レポートは正常に作成および解析されますが、フレームワークでのPear Coding標準への違反が非常に多いため、実際には役に立ちません。

Codesnifferは、次のように私のAntビルドスクリプトから呼び出されます。

<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server">
 <exec executable="phpcs" dir="${basedir}" output="${basedir}/build/logs/checkstyle.xml" failonerror="off">
  <arg line="--report=checkstyle --standard=${basedir}/build/phpcs.xml --extensions=php  --ignore=*/framework/* ${basedir}" />
 </exec>
</target>

私は、、、および上記の行の1つを試しまし--ignore=framework--ignore=framework/が、すべてWebで見つけた例からのものです。

また、引数()ごとに異なる行を使用してみましusing < arg value"..." />たが、役に立ちませんでした。

何か案は?とても有難い :)

編集:--ignore引数は次のようになりました:

--ignore=${basedir}/framework/

...それでも、フレームワークフォルダは含まれています。--ignore引数を使用してPhpCodeSniffer構成が機能している人はいますか?

ここで指を交差させる

4

4 に答える 4

8

私はジェンキンスでも同じ問題を抱えていましたが、上記の回答はある程度役に立ちました。これは私が今持っているものです(そして私のシステムで動作します)。

システムが次のようになっている場合:

/
/build.xml
/foo
/foo/bar

これは私がbuild.xmlに持っているものです

  <target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
<exec executable="phpcs">
  <arg value="--standard=${basedir}/build/phpcs.xml" />
  <arg value="--ignore=foo/bar" />
  <arg path="${basedir}" />
</exec>

秘訣は、$ {basedir}を使用せず、ディレクトリの末尾のスラッシュを失うことでした。

お役に立てば幸いです

于 2012-10-17T10:09:48.963 に答える
5

これらの除外をbuild/phpcs.xmlに配置することも可能です。ここジェンキンスでうまく働いています。

js / facebook dir内のすべてのファイルを除外する例、js / jquery *のワイルドカード一致、および指定されたファイル名。

<exclude-pattern>lib/facebook</exclude-pattern>
<exclude-pattern>js/jquery*</exclude-pattern>
<exclude-pattern>lib/Postmark.php</exclude-pattern>
于 2012-10-19T09:32:04.753 に答える
3

*シェルがそれらを拡張するため、使用は機能しません。

バージョンphp_codesnifferに応じて、無視するディレクトリへのフルパス(古いバージョン)、または無視を機能させるためのビルドディレクトリからの相対パス(php_codesnifferバージョン1.3.6以降)のいずれかを渡す必要があります。

変更ログからの抜粋:

  • パターンを無視して、チェック対象のディレクトリに基づいてファイルの相対パスをチェックするようになりました
于 2012-09-06T12:42:32.407 に答える
1

入力ありがとうございます。私はこのようにそれを解決することになりました

    <target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server">
     <exec executable="phpcs" failonerror="off">
      <arg line="-v --report-checkstyle=${basedir}/build/logs/checkstyle.xml --standard=${basedir}/build/phpcs.xml --extensions=php --ignore=extensions,library ./protected" />
     </exec>
    </target>

動作します!

于 2012-10-18T12:48:57.463 に答える