Поделиться через


Практическое руководство. Настройка словаря анализа кода

В анализе кода используется встроенный словарь для проверки идентификаторов в коде на наличие ошибок в правописании или грамматическом падеже, а также других нарушений соглашений об именовании, указанных в рекомендациях для платформы .NET Framework.Можно создать XML-файл настраиваемого словаря, чтобы добавлять, удалять или изменять термины, сокращения и аббревиатуры во встроенном словаре.

Например, предположим, что код содержит класс под названием DoorKnokker.При анализе кода это имя рассматривается как состоящее из двух слов: door и knokker.Таким образом, на экран выводится предупреждение о том, что слово 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.Нерекомендуемый термин — это правильно написанное слово, которое не следует использовать.

Чтобы включить в предупреждение предлагаемый альтернативный термин, укажите альтернативу в атрибуте PreferredAlternate элемента Term.Если предлагать альтернативу не требуется, можно оставить значение этого атрибута пустым.

  • В элементе 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.В атрибуте CompoundAlternate элемента Term укажите отдельные слова, из которых состоит составной термин, написав первую букву каждого слова в верхнем регистре (написание в стиле 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. Выберите в списке Копировать в выходной каталог пункт Не копировать.