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

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

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

11.12.2008 13:13:14
Я могу подтвердить, что это происходит на моей машине тоже. Я использовал ProcessMonitor, чтобы подтвердить, что файл CustomDictionary.xml читается FxCop, но ошибка остается.
Darren Oster 12.12.2008 02:57:06
До сих пор я нашел эту ссылку, которая может помочь: Создание пользовательского словаря для анализа кода в VS2008 duncanjasmith.blogspot.com/2008/07/…
Thomas Bratt 13.12.2008 14:13:05
8 ОТВЕТОВ

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

  • Словарь Microsoft Office (добавление слов через MS Word и т. Д. Должно работать)
  • Файл 'CustomDictionary.xml' хранится в папке программы FxCop , а не в папке файла проекта.
4
16.12.2008 12:54:03
Его работа в папке проекта файла также. Я использую VS 2017
amit jha 12.05.2017 15:45:35

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

Из блога Visual Studio Team по анализу кода

Добавить собственный словарь в проект 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>
    

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

29
15.01.2009 11:33:34
CodeAnalysisDictionary вызывает «Значение свойства недопустимо». ошибка в моей системе.
Garth Kidd 27.01.2009 11:24:05
«В Build Action выберите CodeAnalysisDictionary» Я не вижу эту опцию - все, что я вижу, это «Нет», «Компилировать», «Содержимое» и «Встроенный ресурс»
Damien 31.01.2009 09:05:58
это, вероятно, только для vs2010
Cohen 24.03.2009 15:59:31
Я считаю, что это на самом деле для Team System, а не Professional.
John Gietzen 22.05.2009 19:06:30
Для любого, кто ссылается на отрывок (из разорванной ссылки на блог) в ответе выше: это может быть очевидным, но, конечно, кавычки встречаются productnameи companynameне должны быть включены в XML.
Mike C 1.11.2016 17:19:25

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

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

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

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

17
7.04.2009 15:31:49
Я думаю, что вы хотите сказать «положить его в папку вашего проекта», а не «положить его в папку вашего решения».
mhenry1384 15.11.2009 20:55:15
Нет, FxCop ищет родительские каталоги папки проекта. Таким образом, помещая пользовательский словарь в папку решения, он делится записями со всеми проектами.
David Schmitt 16.11.2009 12:34:59

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

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

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

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

3
23.05.2017 12:16:40
Если я удаляю словарь в папке fxCop, я получаю больше ошибок, так как такие слова, как Json, не распознаются, и если я добавляю слова в этот словарь (что не является реальным решением), слово все равно не распознается.
DevDave 18.02.2013 16:32:44

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

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

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

4
12.04.2010 08:35:34

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

1
8.06.2012 23:41:59

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

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

0
7.10.2012 17:22:46

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

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

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

в

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" >
  <CustomDictionary Path="$(ProjectDir)/CustomDictionary.xml"/>
</CustomDictionaries>
2
17.07.2014 13:53:48