정적 코드 분석을 위해 FxCopCmd 도구를 사용하고 있습니다. 우리는 이미 거대한 코드베이스를 가지고 있었기 때문에 FxCop과 함께 제공되는 baseline.exe 도구를 사용하여 기존 문제를 기준으로 삼았습니다.FxCop : 비동기 메서드에 대한 억제 메시지
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 on 메시지가 작동을 멈 춥니 다. 이는 method1이 비동기 적이므로 컴파일 된 코드 (첫 번째 경우는 <method1>d__0
)에 새 클래스 (refer this)가 작성 되었기 때문입니다. 그러나 method1 앞에 다른 메서드를 추가하면 컴파일 된 코드로 만들어진 새 클래스의 이름은 <method1>d__1
입니다. 결과적으로, 억제 메시지가 적용되지 않고 FxCop이 다시 코드의 오류를 보여주기 시작합니다.
비동기 메서드에 대한 FxCop 오류를 영구히 억제하는 방법이 있습니까?
Visual Studio 분석을 사용하여 15k + FxCop 문제가있는 프로젝트에서도이 동작을 본 적이 없습니다. 그걸 시도해 봤어? –
프로젝트에 비동기 메소드가 포함되어 있습니까? 문제는 비동기 메서드의 코드를 컴파일해야하기 때문입니다. –
예, 수백 개의 비동기 메소드가 있습니다. 편집 : 나는 방금 FxCop을 다시 실행했습니다. 그 동작은 Visual Studio 분석에서 재현 할 수 없습니다. –