2008-12-11 3 views
42

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

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

+2

I может подтвердить, что это происходит и на моей машине. Я использовал ProcessMonitor для подтверждения того, что файл CustomDictionary.xml считывается FxCop, но ошибка остается. –

+0

До сих пор я нашел эту ссылку, которая может помочь: Создание пользовательского словаря для анализа кода в VS2008 http://duncanjasmith.blogspot.com/2008/07/creating-custom-dictionary-for-code. html –

ответ

4

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

  • Словарь Microsoft Office (добавление слов с помощью MS Word и т.д.) должны работать файл
  • A 'CustomDictionary.xml' хранится в папкеFxCop программы, а не в папку проекта.
+0

Я пробовал словарь Microsoft Office. Это не сработало. –

+0

Его также работает в папке файла проекта. Я использую VS 2017 –

29

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

От Visual Studio Code Analysis Team Blog

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

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

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

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

+1

CodeAnalysisDictionary вызывает ошибку «Недопустимое значение свойства.» В моей системе. –

+0

"in Build Action select CodeAnalysisDictionary" Я не вижу эту опцию - все, что я вижу, это «None», «Compile», «Content» и «Embedded Resource». – Damien

+0

это, вероятно, только для vs2010 – Cohen

17

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

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

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

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

+0

Я думаю, вы имеете в виду чтобы сказать «поместите его в папку проекта», а не «поместите его в папку с вашим решением». – mhenry1384

+0

Нет, FxCop ищет родительские каталоги папки проекта. Поэтому помещая пользовательский словарь в папку решения, разделяет записи со всеми проектами. –

+1

Использование 10.0 он не работает :( –

3

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

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

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

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

+0

Если я удалю словарь в папке fxCop, я получаю больше ошибок, поскольку такие слова, как Json, не распознаются, и если я добавлю слова в этот словарь (который не является реальным решением), слово все равно не распознается. – DevDave

4

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

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

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

1

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

0

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

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

2

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

Я изменил эту линию

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

в

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" > 
    <CustomDictionary Path="$(ProjectDir)/CustomDictionary.xml"/> 
</CustomDictionaries> 
Смежные вопросы