Я хочу рассматривать предупреждения Stylecop как ошибки, но это не работает для меня.
Мои проекты настроены так, чтобы обрабатывать предупреждения как ошибки, и если я строю с помощью реального "предупреждения компилятора", он действительно отображает ошибку компилятора. Но с предупреждением "Stylecop" он отображает предупреждение о компиляторе.
В результате этого мой checkin для TeamCity досадно не нарушает сборку CI, когда есть предупреждения Stylecop.
Я использую VS2013 со Stylecop 4.7.49.
Мои настройки:
-
Проект → Свойства → Сборка
- Уровень предупреждения: 4
- Подавлять предупреждения: 1591
- Лечить предупреждения как ошибки: Все
-
Проект → Настройки стиля → Параметры
- Относитесь к нарушениям как к ошибкам: Проверено
Пример кода, который правильно разбивает сборку, содержащий предупреждение реального компилятора:
using System;
namespace CodeUsageTest
{
public class CodeUsage
{
private string fff()
{
int nobodyLovesMe; //CS0168
return "";
}
}
}
Создать вывод:
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,17,9,30): error CS0168: Warning as Error: The variable 'nobodyLovesMe' is declared but never used
========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 skipped ==========
Пример кода, который не разбивает сборку (хотя я хочу ее), содержащий предупреждение о стилевом стиле:
using System;
namespace CodeUsageTest
{
public class CodeUsage
{
private string fff() //SA1300
{
return ""; //SA1122
}
}
}
Создать вывод:
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(7,1): warning : SA1300 : CSharp.Naming : method names begin with an upper-case letter: fff.
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,1): warning : SA1122 : CSharp.Readability : Use string.Empty rather than "".
========== Build: 1 succeeded, 0 failed, 3 up-to-date, 0 skipped ==========