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

Как можно заставить пользовательский словарь FxCop работать правильно?

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


person Thomas Bratt    schedule 11.12.2008    source источник
comment
Я могу подтвердить, что это происходит и на моей машине. Я использовал ProcessMonitor, чтобы подтвердить, что файл CustomDictionary.xml читается FxCop, но ошибка остается.   -  person Darren Oster    schedule 12.12.2008
comment
Пока я нашел эту ссылку, которая может помочь: Создание пользовательского словаря для анализа кода в VS2008 duncanjasmith.blogspot.com/2008/07/   -  person Thomas Bratt    schedule 13.12.2008


Ответы (8)


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

Из Visual Studio Блог группы анализа кода

Добавить собственный словарь в проект C # и Visual Basic просто:

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

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

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

person spinodal    schedule 15.01.2009
comment
CodeAnalysisDictionary вызывает сообщение «Недопустимое значение свойства». ошибка в моей системе. - person Garth Kidd; 27.01.2009
comment
в разделе «Действие сборки» выберите «CodeAnalysisDictionary». Я не вижу этой опции - все, что я вижу, это «Нет», «Скомпилировать», «Контент» и «Встроенный ресурс». - person Damien; 31.01.2009
comment
это наверное только для vs2010 - person Cohen; 24.03.2009
comment
Я считаю, что это на самом деле для Team System, а не для Professional. - person John Gietzen; 22.05.2009
comment
Для тех, кто ссылается на выдержку (из теперь уже неработающей ссылки в блоге) в ответе выше: это может быть очевидно, но, конечно же, кавычки вокруг productname и companyname не должны включаться в XML. - person Mike C; 01.11.2016
comment
новая ссылка блоги .msdn.microsoft.com / codeanalysis / 2007/08/20 / - person amit jha; 12.05.2017
comment
не требуется - person amit jha; 12.05.2017

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

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

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

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

person David Schmitt    schedule 07.04.2009
comment
Я думаю, вы хотите сказать, поместите его в папку проекта, а не в папку решения. - person mhenry1384; 15.11.2009
comment
Нет, FxCop выполняет поиск в родительских каталогах папки проекта. Таким образом, помещая настраиваемый словарь в папку решения, вы делитесь записями со всеми проектами. - person David Schmitt; 16.11.2009

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

  • Словарь Microsoft Office (добавление слов через MS Word и т. Д. Должно работать)
  • Файл CustomDictionary.xml, хранящийся в папке программы FxCop, а не в папке с файлами проекта.
person andypaxo    schedule 16.12.2008
comment
Он также работает в папке с файлами проекта. Я использую VS 2017 - person amit jha; 12.05.2017

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

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

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

person Pete    schedule 12.04.2010

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

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

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

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

person Grhm    schedule 25.11.2009
comment
Если я удалю словарь в папке fxCop, я получаю больше ошибок, так как такие слова, как Json, не распознаются, а если я добавляю слова в этот словарь (что не является настоящим решением), слово все равно не распознается. - person DevDave; 18.02.2013

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

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

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

to

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" >
  <CustomDictionary Path="$(ProjectDir)/CustomDictionary.xml"/>
</CustomDictionaries>
person Anthony Shaw    schedule 24.06.2014

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

person Trystan Spangler    schedule 08.06.2012

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

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

person Mark    schedule 07.10.2012