1

ソリューションに含まれるすべての cs ファイルで stylecop タスクを実行する際に助けが必要です。可能かどうか、またその方法を教えてください。現在、ファイルでは実行できますが、ソリューションでは実行できません。

 <CreateItem Include="$(RootPath)\**\*.cs">
  <Output TaskParameter="Include" ItemName="StyleCopFiles"/>
</CreateItem>

 <MSBuild.ExtensionPack.CodeQuality.StyleCop
          TaskAction="Scan"
          ShowOutput="true"
          ForceFullAnalysis="true"
          CacheResults="false"
          SourceFiles="@(StyleCopFiles)"
          logFile="$(OutDir)\StyleCopLog.txt"
          SettingsFile="$(MSBuildStartupDirectory)\..\Settings.StyleCop"
          ContinueOnError="false">
          <Output TaskParameter="Succeeded" PropertyName="AllPassed"/>
          <Output TaskParameter="ViolationCount" PropertyName="Violations"/>
          <Output TaskParameter="FailedFiles" ItemName="Failures"/>
    </MSBuild.ExtensionPack.CodeQuality.StyleCop>
4

1 に答える 1

3

プロジェクトビルドプロセスの一部としてStyleCopルールを自動的に実行することを検討しましたか?これにより、すべてのルールがソリューションレベルではなく、プロジェクトレベルで実行されます。プロジェクト/ソリューションをビルドするたびにルールが実行され、エラーリストパネルに警告として表示されるため、このアプローチをお勧めします(ダブルクリックして問題のあるコード行に移動します)。プロジェクトごとにこれを構成するのは面倒に思えるかもしれませんが、単体テストプロジェクトには異なるStyleCopルールのセットがあり、これにより、それらを個別に構成できます。

また、プロジェクトをビルドするとStyleCopルールが自動的に実行されるため、ビルドスクリプトにMSBuildタスクを明示的に追加する必要はありません。

また、NuGetパッケージ:StyleCop.MSBuild(バージョン4.7.17.1)を使用しており、相対パスを使用して、次のように.csprojファイル内からパッケージを参照していることにも注意してください。

<Project>
    <Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" />
</Project>

http://stylecop.codeplex.com/wikipage?title=Running%20StyleCop%20in%20VS2005%20or%20VS%20Express&referringTitle=Documentation

ルールを実行するタイミングに条件を設定することもできます。条件がfalseと評価された場合、StyleCopは実行されません。ユニットテストを実行するときにStyleCopを抑制する条件を使用します

<Project>
    <Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" Condition="'$(NCrunch)'!='1'" />
</Project>

StyleCopルールを構成するには、StyleCop_v4.7.17.0.msiをインストールする必要があります。コードベース全体に対して、単一のSettings.StyleCopファイル(親設定ファイル)のみを定義します。

http://stylecop.codeplex.com/wikipage?title=Sharing%20StyleCop%20Settings%20Across%20Projects&referringTitle=Documentation

于 2012-09-28T17:42:02.997 に答える