1

저는 물어볼 것이 확실하지 않지만 코드 분석 전문가가 해결 방법을 제안 할 수 있기를 바랍니다.기능을 기반으로 한 필터링 규칙

기능을 기준으로 GlobalSuppressions.cs에있는 코드 분석 경고를 제외시키는 방법을 찾으려고합니다. 예를 들어, 내가 서명이 될 수 있도록, 내 로깅 문 (나는 외관을 CommonLogging 사용한다)의 **** 모든 ****에

"Microsoft.Globalization", "CA1305:SpecifyIFormatProvider" 

을 해제하고 싶은 뭔가 같은 :

Common.Logging.ILog.Trace(System.Action<Common.Logging.FormatMessageHandler>) 

형식, 네임 스페이스 또는 메서드 이름에 관계없이 프로젝트 전체에서이 모든 작업을 수행하고 싶습니다. ...

otheranswers에서 보니 지금은 불가능한 것 같습니다 ... 아니면 그렇습니까?

답변

0

이것은 실제로 가능하지 않습니다. string을 허용하는 오버로드와 string, IFormatProvider을 허용하는 오버로드를 모두 가진 메서드를 호출하면이 규칙이 실행됩니다. 아마도 문화적으로 민감하거나 문화적으로 민감하지 않은 로그 파일을 원할 것으로 예상되기 때문에 아마 그렇게 될 것입니다. 이 경우 코드 분석을 통해 해당 선택을해야합니다.

당신이 할 수있는 일은 자신의 규칙을 작성하고이 규칙을 사용하지 않도록 설정하는 것입니다. 아니면 위반 사항을 수정하여 방해가 될 수 있습니다. 빠른 정규식 검색 + 바꾸기는 아마 몇 초 안에 이것들을 고칠 수 있습니다.

또는 코드와 Common.Logging 사이에 Proxy/Facade 역할을하는 하나의 클래스를 작성하고 string 변형 만 허용 할 수 있습니다. 그런 다음 코드를 리팩토링하여 메서드를 사용할 수 있습니다. 그렇게하면 한 번 위반 한 사항 만 수정하면 새로 작성한 외관에 남아있게됩니다.

+0

흠 ... 그냥 로깅 외관에 대한 회피를 작성하십시오 CA는 옵션이지만 과장되면 확실하지 않습니다. 너무 규칙적으로 정규식을 기반으로하는 규칙을 비활성화 할 수 없습니다. 검색 및 바꾸기는 그럴듯하지만 로깅 구문을 매우 장황하게 만듭니다 (이미 지연된 실행 람다, 즉 Logger.Debug (msg => "Hello {0}", "World")). .... 앞으로 CA 팀이이 문제를 해결할 수 있기를 희망합니다. – zam6ak