CA1704 - Microsoft, кажется, блокирует слово "Multi"?

public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly

Когда я запускаю Code Analysis, я получаю сообщение об ошибке, потому что Microsoft не распознает слово "Multi" (поймите, что они используют его в IMultiValueConverter). Итак, чтобы исправить это, я добавил файл CodeAnalysisDictionary.xml и следовал инструкциям, приведенным здесь. Однако, похоже, это не решает ситуацию, я все еще получаю предупреждение Code Analysis.

Чтобы убедиться, что это не ошибка в разделе распознанных слов, я добавил еще один класс и еще одно исключение.

public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
public class MutiiSomething { } //NO WARNING

<Dictionary>
  <Words>
    <Recognized>
      <Word>Multi</Word> <-- This seems to not do anything... -->
      <Word>Mutii</Word> <-- This actually does something... -->
    </Recognized>
  </Words>
</Dictionary>

Альтернативой ее исправлению является использование SuppressMessage, хотя это не совсем подходящее решение, если я планирую использовать это слово повсеместно.

[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multi")]
public class MultiSomething { } //NO WARNING (Suppressed)

Microsoft фактически блокировала добавление слова "Multi" к распознанным словам?

2 ответа

Решение

Вы можете обратиться к этой обратной связи. Это очевидно по замыслу.

Вы наблюдаете поведение, потому что Code Analysis поставляется с предопределенным пользовательским словарем, который всегда переопределяет любые другие пользовательские словари в случае конфликта. В этом случае слово "multi" указывается в виде слова в словаре FXCop по умолчанию.

Чтобы устранить эту проблему, откройте словарь по умолчанию%VS Install Directory%\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml и закомментируйте или удалите "multi" запись из раздела "unrecognized> words"; "multi" больше не будет помечен как орфографическая ошибка в анализе кода.

Попробуйте добавить это к вашему обычному

<Deprecated>
  <Term PreferredAlternate="Multi">multi</Term>
</Deprecated>

Вы можете добавить XML-файл с сокращениями Word и т. Д.

Добавьте ваш XML-файл и установите Build Action = CodeAnalysisDictionary

<?xml version="1.0" encoding="utf-8" ?>
<Dictionary>
  <Words>
    <Unrecognized>
      <Word></Word>
    </Unrecognized>
    <Recognized>
      <Word>Multi</Word>
    </Recognized>
    <Deprecated>
      <Term PreferredAlternate=""></Term>
    </Deprecated>
    <Compound>
      <Term CompoundAlternate=""></Term>
    </Compound>
    <DiscreteExceptions>
      <Term>PostDate</Term>
    </DiscreteExceptions>
  </Words>
  <Acronyms>
    <CasingExceptions>
      <Acronym></Acronym> 
    </CasingExceptions>
  </Acronyms>
</Dictionary>
Другие вопросы по тегам