Я использую инструмент FxCopCmd для анализа статического кода. Поскольку у нас уже была огромная база кода, мы установили существующие проблемы, используя baseline.exe инструмент, который поставляется с FxCop.FxCop: сообщение о пресечении для метода async
Я наблюдаю, что если я добавлю новый метод в свой класс C#, то некоторые из сообщений подавления в файле GlobalSuppression.cs перестанут работать, и я получаю проблемы для кода, который я не коснулся.
Пример:
namespace ConsoleApplication1
{
class Program
{
public async Task<string> method1()
{
string a = "";
a.Equals("abc", StringComparison.InvariantCultureIgnoreCase);
return a;
}
static void Main(string[] args)
{
}
}
}
Это бросает следующие ошибки:
CA1031 : Microsoft.Design : Modify 'Program.d__0.MoveNext()' to catch a more specific exception than 'Exception' or rethrow the exception
Чтобы подавить вопрос в 'CA1309 UseOrdinalStringComparison', я добавил следующее подавление сообщения в GlobalSuppression.cs подать
[module: SuppressMessage("Microsoft.Globalization", "CA1309:UseOrdinalStringComparison", Scope="member", Target="ConsoleApplication1.Program.d__0.MoveNext()", MessageId="System.String.Equals(System.String,System.StringComparison)", Justification="")]
Но если я добавлю еще один метод в класс, то это suppressi на сообщение перестает работать. Это связано с тем, что метод1 является асинхронным, и поэтому создается новый класс (refer this) в скомпилированном коде (который был <method1>d__0
в первом случае). Но когда я добавляю еще один метод перед методом1, новый класс, созданный в скомпилированном коде, называется <method1>d__1
. Следовательно, сообщение подавления не применяется, и FxCop снова начинает показывать ошибки в коде.
Есть ли способ устранить ошибки FxCop для асинхронных методов на постоянной основе?
Я никогда не видел такого поведения даже в проектах с проблемами 15k + FxCop с использованием анализа Visual Studio. Вы пробовали с этим? –
Вы уверены, что проект включает асинхронные методы? Поведение связано с компиляцией кода асинхронных методов. –
Да, у него были сотни асинхронных методов. EDIT: Я только что запустил FxCop, это поведение не воспроизводится при анализе Visual Studio –