Вопрос по fxcop, code-analysis, compiler-warnings, visual-studio-2010 – Обрабатывать предупреждения как ошибки не имеет никакого эффекта

8

В моем проектеНастройки в Visual Studio я установилОтноситесь к предупреждениям как к ошибкам кВсе', Уровень предупреждения установлен на 4. Я протестировал это, сознательно вводя код, который нарушает CA1305, но он успешно (и перестраивает) строит, возвращая предупреждение. Я ожидал, что сборка не удастся и будет возвращена ошибка. Мое понимание неверно?

У вас естьpragmas что явно отключить это предупреждение? Chris O

Ваш Ответ

2   ответа
13

к ошибок. Чтобы предупреждения анализа кода обрабатывались как таковые, добавьте новый набор правил анализа кода в свое решение. Для этого щелкните правой кнопкой мыши свое решение и выберите «Добавить новый элемент ... », Ищи "Набор правил " и выберите, чтобы добавить новыйНабор правил анализа кода », Дайте ему любое имя.

В редакторе набора правил выберите правила, которые вы хотите включить в свой проект, и установите для них значение Ошибка. Вы можете выбрать, какие правила рассматривать как ошибки, а какие как предупреждения.

Задайте имя для набора правил в окне свойств набора правил анализа кода испасти Это. Затем откройтеAnalyze->Configure Code Analysis for Solution пункт меню.

Выберите свойКак ошибка " набор правил для ваших проектов и применять.

8

вашем csproj-файле, как описано здесь:

http://blogs.msdn.com/b/codeanalysis/archive/2007/08/08/_24002800_codeanalysistreatwarningaserrors_2900_-msbuild-property.aspx

Для Visual Studio 2008 мы добавили новое свойство MSBuild, которое позволяет легко обрабатывать все предупреждения анализа кода как ошибки сборки. Это может быть полезно, например, если вы хотите заставить любой запуск правила Code Analysis нарушать сборку во время ночной Team Build без необходимости индивидуально устанавливать это для каждого правила.

Для использования просто добавьте свойство в файл проекта (или в файл с общими целями) и установите для него значение true:

<!--?xml version="1.0" encoding="utf-8"?-->
<project toolsversion="12.0" defaulttargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <import project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')">
    <propertygroup>
        [...]
        <!-- either here -->
        <codeanalysistreatwarningsaserrors>true</codeanalysistreatwarningsaserrors>
    </propertygroup>
    <propertygroup condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        [...]
        <!-- or here ... -->
        <codeanalysistreatwarningsaserrors>true</codeanalysistreatwarningsaserrors>
    </propertygroup>
    <propertygroup condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        [...]
        <!-- and here -->
        <codeanalysistreatwarningsaserrors>true</codeanalysistreatwarningsaserrors>
    </propertygroup>
    [...]
</import></project>

Это может быть использовано в сочетании сfalse, который будет иметь тот же эффект на предупреждения StyleCop.

@hiroprotagonist: спасибо за совет, готово. :-) TiltonJH
PS: Сама сборка (создание сборки) не выполняется, потому что она выполняется компилятором. Однако после компилятораFxCop.exe» запускается и выдает CA Предупреждения / Ошибки. А это в свою очередь останавливает процесс сборки. TiltonJH
Вы включили CA в свойствах библиотеки классов для требуемой конфигурации (Debug / Release)? Указанный набор правил на самом деле имеет предупреждения? А вы дважды проверили * .csproj-файлы на наличие опечаток? В противном случае, нет, не знаю. Сожалею. Я использую это во всех видах * .csproj в VS / TFS 2010, VS / TFS 2013, VS / TFS 2015, и этот тип никогда не влиял на эти настройки. TiltonJH
Любая идея, почему это не будетработает для библиотеки классов, но работает ли для MS Test Project? одна и та же конфигурация одинакового кода в обоих проектах .... но предупреждения CA не нарушают сборку проекта класса lib ... Michiel Cornille
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницыmeta.stackexchange.com/questions/8231/... hiro protagonist

Похожие вопросы