方法 : コード分析辞書をカスタマイズする

コード分析では、組み込みの辞書を使用して、スペル、文法上の形式、および .NET Framework ガイドラインのその他の名前付け規則における誤りがないかどうかコード内の識別子をチェックします。カスタム辞書 XML ファイルを作成して、組み込みの辞書に対して用語、省略形、および頭字語の追加、削除、または変更を行うことができます。

たとえば、コードに DoorKnokker という名前のクラスが含まれていたとします。コード分析では、この名前を doorknokker という 2 つの単語の複合語と見なします。その後、knokker のスペルが正しくないことを示す警告が発生します。コード分析でこのスペルが認められるようにするには、knokker を用語としてカスタム辞書に追加します。

カスタム辞書を作成するには

CustomDictionary.xml という名前のファイルを作成します。

次の XML 構造体を使用して、カスタム単語を定義します。

<Dictionary>
      <Words>
         <Unrecognized>
            <Word>knokker</Word>
         </Unrecognized>
         <Recognized>
            <Word></Word>
         </Recognized>
         <Deprecated>
            <Term PreferredAlternate=""></Term>
         </Deprecated>
         <Compound>
            <Term CompoundAlternate=""></Term>
         </Compound>
         <DiscreteExceptions>
            <Term></Term>
         </DiscreteExceptions>
      </Words>
      <Acronyms>
         <CasingExceptions>
            <Acronym></Acronym>
         </CasingExceptions>
      </Acronyms>
   </Dictionary>

カスタム辞書の要素

コード分析辞書の動作は、カスタム辞書の次の要素の内部テキストとして用語を追加することによって変更できます。

Dictionary/Words/Recognized/Word

コード分析で正しいスペルと見なされる用語のリストに用語を含めるには、その用語を Dictionary/Words/Recognized/Word 要素の内部テキストとして追加します。Dictionary/Words/Recognized/Word 要素の用語では、大文字と小文字が区別されません。

<Dictionary>
      <Words>
         <Recognized>
            <Word>knokker</Word>
            ...
         </Recognized>
         ...
      </Words>
      ...
</Dictionary>

Dictionary/Words/Recognized ノードの用語は、次のコード分析規則に適用されます。

Dictionary/Words/Unrecognized/Word

コード分析で正しいスペルと見なされる用語のリストから用語を除外するには、除外する用語を Dictionary/Words/Unrecognized/Word 要素の内部テキストとして追加します。Dictionary/Words/Unrecognized/Word 要素の用語では、大文字と小文字が区別されません。

<Dictionary>
      <Words>
         <Unrecognized>
            <Word>meth</Word>
            ...
         </Unrecognized>
         ...
      </Words>
      ...
</Dictionary>

Dictionary/Words/Unrecognized ノードの用語は、次のコード分析規則に適用されます。

Dictionary/Words/Deprecated/Term[@PreferredAlternate]

コード分析で非推奨と見なされる用語のリストに用語を含めるには、その用語を Dictionary/Words/Deprecated/Term 要素の内部テキストとして追加します。非推奨の用語とは、スペルは正しいが使用しない単語のことです。

推奨される代わりの用語を警告に含めるには、Term 要素の PreferredAlternate 属性に代わりの用語を指定します。代わりの用語を提示しない場合、属性値は空のままにしておいてかまいません。

  • Dictionary/Words/Deprecated/Term 要素の非推奨の用語では、大文字と小文字が区別されません。

  • PreferredAlternate 属性値では、大文字と小文字が区別されます。代わりの用語が複合語の場合は、Pascal 形式を使用します。

<Dictionary>
      <Words>
         <Deprecated>
            <Term PreferredAlternate="LogOn">login</Term>
            ...
         </Deprecated>
         ...
      </Words>
      ...
</Dictionary>

Dictionary/Words/Deprecated ノードの用語は、次のコード分析規則に適用されます。

Dictionary/Words/Compound/Term[@CompoundAlternate]

組み込みの辞書では、一部の用語が複合語ではなく別々の単語と見なされます。コード分析で複合語と見なされる用語のリストに用語を含め、用語の正しい大文字と小文字を指定するには、その用語を Dictionary/Words/Compound/Term 要素の内部テキストとして追加します。Term 要素の CompoundAlternate 属性で、各単語の最初の文字を大文字にして (Pascal 形式)、複合語を構成する各単語を指定します。内部テキストで指定した用語は Dictionary/Words/DiscreteExceptions リストに自動的に追加されることに注意してください。

  • Dictionary/Words/Deprecated/Term 要素の非推奨の用語では、大文字と小文字が区別されません。

  • PreferredAlternate 属性値では、大文字と小文字が区別されます。代わりの用語が複合語の場合は、Pascal 形式を使用します。

<Dictionary>
      <Words>
         <Compound>
            <Term CompoundAlternate="CheckBox">checkbox</Term>
            ...
         </Compound>
         ...
      </Words>
      ...
</Dictionary>

Dictionary/Words/Compound ノードの用語は、次のコード分析規則に適用されます。

Dictionary/Words/DiscreteExceptions/Term

用語を複合語の大文字と小文字の規則によってチェックする場合に、コード分析で個別の単語と見なされる用語のリストから用語を除外するには、その用語を Dictionary/Words/DiscreteExceptions/Term 要素の内部テキストとして追加します。Dictionary/Words/DiscreteExceptions/Term 要素の用語では、大文字と小文字が区別されません。

<Dictionary>
      <Words>
         <DiscreteExceptions>
            <Term>checkbox</Term>
            ...
         </DiscreteExceptions>
         ...
      </Words>
      ...
</Dictionary>

Dictionary/Words/DiscreteExceptions ノードの用語は、次のコード分析規則に適用されます。

Dictionary/Acronyms/CasingExceptions/Acronym

用語を複合語の大文字と小文字の規則によってチェックする場合に、コード分析で正しいスペルと見なされる用語のリストに頭字語を含め、頭字語の形式を指定するには、その用語を Dictionary/Acronyms/CasingExceptions/Acronym 要素の内部テキストとして追加します。Dictionary/Acronyms/CasingExceptions/Acronym 要素の頭字語では、大文字と小文字が区別されます。

<Dictionary>
      <Acronyms>
         <CasingExceptions>
            <Acronym>NESW</Acronym>   <!-- North East South West -->
            ...
         </CasingExceptions>
         ...
      </Acronyms>
      ...
</Dictionary>

Dictionary/Acronyms/CasingExceptions ノードの用語は、次のコード分析規則に適用されます。

  • CA1709: Identifiers should be cased correctly

カスタム辞書をプロジェクトに適用するには

  1. ソリューション エクスプローラーで、次のいずれかの手順を実行します。

  2. 辞書を単一のプロジェクトに追加するには、プロジェクト名を右クリックし、[既存項目の追加] をクリックします。[新しい項目の追加] ダイアログ ボックスで、ファイルを指定します。

  3. 複数のプロジェクト間で共有する辞書を追加するには、[既存項目の追加] ダイアログ ボックスで共有するファイルを探し、[追加] の下向きの矢印をクリックして、[リンクとして追加] をクリックします。

  4. ソリューション エクスプローラーで、ファイル名 CustomDictionary.xml を右クリックし、[プロパティ] をクリックします。

  5. [ビルド アクション] のドロップダウン リストの [CodeAnalysisDictionary] をクリックします。

  6. [出力ディレクトリにコピー] のドロップダウン リストの [コピーしない] をクリックします。