Почему StyleCop SA1305 не соблюдает список разрешенных префиксов в VS2010 (или MSBuild)?
Я только что обновил проект с 2008 до 2010 Beta 2, и StyleCop теперь сообщает о предупреждениях SA1305 (венгерская нотация) об именах переменных с префиксом "is". "Is" определенно находится в списке разрешенных префиксов.
Это известная проблема? Кто-нибудь еще сталкивался с этой проблемой? Код определенно компилировался без каких-либо предупреждений в 2008 году.
Обновление: Оказывается, что это может работать, как и ожидалось, в Visual Studio, но затем происходит сбой через MSBuild. Смотрите ответ ниже, почему.
3 ответа
Я столкнулся с подобной проблемой сейчас при сборке с msbuild vs на панели разработчика. Оказывается, что по умолчанию Settings.StyleCop (C:\Program Files (x86)\MSBuild\Microsoft\StyleCop\v4.4
) который установлен на самом деле содержит набор значений, которые вам нужно будет дублировать в вашем собственном файле, если либо:
- вы не устанавливаете StyleCop на "другой" (сборочный) компьютер
или же
- у вас включено "не объединять с другими файлами настроек"
В частности, редактор настроек StyleCop автоматически выбирает венгерские обозначения, исключаемые из другого файла, независимо от того, что указано на вкладке "Файлы настроек".
Вы можете вручную добавить исключение "is" в Settings.StyleCop:
<Analyzers>
<Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.NamingRules">
<AnalyzerSettings>
<CollectionProperty Name="Hungarian">
<Value>is</Value>
</CollectionProperty>
</AnalyzerSettings>
</Analyzer>
</Analyzers>
Просто добавьте это так:
<Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.NamingRules">
<AnalyzerSettings>
<CollectionProperty Name="Hungarian">
<Value>is</Value>
</CollectionProperty>
</AnalyzerSettings>
</Analyzer>