Как заставить работать пользовательский словарь FxCop? - PullRequest
42 голосов
/ 11 декабря 2008

Как сделать так, чтобы пользовательский словарь FxCop работал правильно?

Я попытался добавить слова для распознавания в файл 'CustomDictionary.xml', который находится в той же папке, что и файл проекта FxCop. Это, похоже, не работает, так как я все еще получаю сообщение FxCop «Идентификаторы должны быть написаны правильно», даже после перезагрузки и повторного запуска FxCop. Использование версии 1.36.

Ответы [ 8 ]

29 голосов
/ 15 января 2009

Если вы используете его внутри Visual Studio ...

Из Блог команды разработчиков кода Visual Studio

Чтобы добавить пользовательский словарь в C # и Проект Visual Basic прост:

  1. В обозревателе решений щелкните правой кнопкой мыши проект и выберите «Добавить» -> «Создать». Пункт ...
  2. В разделе «Шаблоны» выберите «Файл XML», введите имя словаря, например как CodeAnalysisDictionary.xml и нажмите Добавить
  3. В обозревателе решений щелкните правой кнопкой мыши файл XML и выберите Свойства
  4. В окне инструмента «Свойства» в разделе «Действие сборки» выберите CodeAnalysisDictionary
  5. В обозревателе решений дважды щелкните вновь созданный словарь, чтобы открой его
  6. В редакторе XML вставьте следующее, заменив «productname» и "название компании" с вашей командой эквиваленты:

    <Dictionary>
         <Words>
            <Recognized>
                <Word>"productname"</Word>
                <Word>"companyname"</Word>
            </Recognized>
        </Words>
    </Dictionary>
    

Теперь вы готовы начать вход ваши собственные слова. Просто добавьте новый элемент для каждого слова в ваш проект, который не существует в словарь. Каждое слово нечувствителен к регистру, поэтому любой корпус слово будет признано. Анализ кода автоматически подберет кастом при следующем запуске словаря.

17 голосов
/ 07 апреля 2009

Самый простой способ - просто назвать его «CustomDictionary.xml» и поместить его в папку вашего решения, где FxCop (протестированный здесь 1.36) подберет его автоматически, если у вас есть

<CustomDictionaries SearchFxCopDir="True"
                    SearchUserProfile="True"
                    SearchProjectDir="True" />

в вашем файле проекта FxCop.

В качестве альтернативы вы можете указать его с помощью параметра командной строки /dictionary.

4 голосов
/ 12 апреля 2010

Я запускаю FxCopCmd.exe как часть моего процесса сборки, и здесь я передаю параметр командной строки словаря

FxCopCmd.exe ... /dictionary:FxCopDictionary.xml

Эта работа с визуальной студией 2010 RC версии FxCop. Не знаю, будет ли это работать с предыдущими версиями.

4 голосов
/ 16 декабря 2008

Насколько мне известно, FxCop 1.35 и далее используют два источника для словаря.

  • Словарь Microsoft Office (добавление слов через MS Word и т. Д. Должно работать)
  • Файл 'CustomDictionary.xml', хранящийся в папке программы FxCop , а не в папке файла проекта.
3 голосов
/ 25 ноября 2009

В дополнение к ответу Дэвида Шмитта выше вам может потребоваться изменить / удалить пользовательский словарь, который поставляется с FxCop, из папки установки FxCop.

Я только что установил FxCop v1.36 и не смог распознать определенные слова Project в моем словаре, пока я не удалил пользовательский словарь на C:\Program Files\Microsoft FxCop 1.36\CustomDictionary.xml.

Однажды я переместил это в одну сторону, FxCop начал использовать CustomDictionary.xml в папке решения.

Это ставит вопрос о том, как добавить общие слова в общий пользовательский словарь и конкретные слова проекта / решения в других пользовательских словарях и фактически использовать FxCop для обоих. Но пока это работает ....

2 голосов
/ 24 июня 2014

Я боролся с большинством приведенных выше ответов и продолжал искать решение. Я наконец внес это изменение в свой файл .fxcop и проверил его в системе контроля версий, он работает как из командной строки, так и из gui fxcop

Я изменил эту строку

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" />

до

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" >
  <CustomDictionary Path="$(ProjectDir)/CustomDictionary.xml"/>
</CustomDictionaries>
1 голос
/ 09 июня 2012

Также убедитесь, что файл действительно *.xml, а не *.xml.txt. Тогда глупо создавать файл с помощью блокнота и забывать, что он всегда добавляет расширение TXT. Это то, что оказалось для меня.

0 голосов
/ 07 октября 2012

Мне не нужно было устанавливать Действие построения на CodeAnalysisDictionary . На самом деле, у меня даже не было этого варианта (с использованием Visual Studio 2010 Professional). Я использую расширение FxCop Integrator . Это позволяет вам щелкнуть правой кнопкой мыши Решение и выбрать Анализ кода . Другой вариант - Дополнительные задачи . В этом меню More Tasks есть возможность редактировать Редактировать словарь FxCop . Когда я выполнил редактирование, он создал новую папку решений с именем Анализ кода , содержащую новый файл XML с именем FxCopDictionary.xml . Этот XML-файл настроен так, как можно было бы ожидать, что файл CustomDictionary.xml будет выглядеть следующим образом.

Надеюсь, это кому-нибудь поможет!

...