web-dev-qa-db-ja.com

多くのプロジェクトでRoslynアナライザーを構成するにはどうすればよいですか?

組織にコード品質と一貫したスタイルを適用したい。

これを行うには、プロジェクトに Roslyn Analyzers および StyleCop を追加する予定です。

これらのアナライザーは、合意されたコーディング標準を満たすために、追加の構成が必要になります。理想的には、これらは 。editorconfig like this を使用して、または失敗した場合は rule setを使用 を使用して構成されます。

私の組織では、多くのプロジェクト、多くのソリューション、多くのリポジトリがあります。私はこれらの基準をできるだけ広範囲に適用したいと考えています。すべてのアナライザーパッケージと構成をすべてのプロジェクトに追加する必要はありません。これを実現するためのより良い、より簡単、より簡単な一貫した方法はありますか?

私は自分の組織用に、組織で選択したアナライザー、任意の構成、実際に作成できるカスタムアナライザーを組み込んだNuGetパッケージを作成できると考えています。この「バンドル」パッケージはすべてのプロジェクトに追加でき、面倒でエラーが発生しやすい繰り返しを回避できます。これは可能ですか、それは良い考えですか?他の誰かがこれをしましたか?

14
Jodrell

Directory.Build.propsおよびDirectory.Build.targets プロジェクトにプロパティとターゲットを追加します。

5
Paulo Morgado

できることがいくつかあります

  • プロジェクトにNuGetパッケージを追加します(これは私たちの職場で行う作業です)。StyleCopとFxCopをカスタマイズした設定で追加しました。動いています。この場合、配布は非常に簡単です。

  • @Paulo Morgadoが言及したように、Directory.Build.propsとDirectory.Build.targetsを追加します-これらはプロジェクトレベルとソリューションレベルで構成可能です

  • EditorConfigも使用できます。広く採用されています。 FxCopとStyleCopはどちらもeditorConfigで非常にうまく機能します。 EditorConfigはNugetにパッケージ化して配布することもできます。 EditorConfigとのFXCopの統合

たとえば、nugetパッケージを作成するには、.nuspecファイルを使用して.netstandardライブラリを作成します。最も基本的な例は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.Microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>

    <dependencies>
      <dependency id="StyleCop.Analyzers" version=""/>
      <dependency id="Microsoft.CodeAnalysis.FxCopAnalyzers" version=""/>
    </dependencies>
  </metadata>

</package>

そしてもちろん、カスタマイズしたコーディングルールを含めて、それらも含めることができます。

  1. 既存のプロジェクトの場合、スクリプト(powershell)を作成し、すべてのプロジェクトを更新して、ルールが1回のプロセスとして追加されるようにすることができます。
  2. カスタムプロジェクトテンプレートをセットアップして、これらのルールを依存関係として含め、すべてのプロジェクトを新しく作成したプロジェクトテンプレートを使用して作成する必要があるようにすることができます。
  3. ゲートチェックインを有効にしてから、上記の提案のように、ビルドサーバーの「msbuild」に小道具/ターゲットを追加して、デフォルトのビルドターゲットに含めることができます。プロジェクトに標準が設定されていない場合、チェックインに失敗します。
0
Sreenath