내 방법은 다음과 같습니다.릴리스 구성에서 CA1801에 대한 거짓 긍정
public static void Debug(this Logger logger, string message)
{
logger.Debug(() => message);
}
디버그 구성으로 코드 분석을 실행할 때 경고 메시지가 표시됩니다. 내가 릴리스 구성과 코드 분석을 실행하면
, 내가 얻을 : 'CommonExtensions.Debug (이 로거, 문자열)'의
CA1801 검토되지 않는 매개 변수 매개 변수 '메시지'사용되지 않습니다를. 매개 변수를 제거하거나 메서드 본문에 사용하십시오. FakeItEasy CommonExtensions.cs 101
및
CA1801 검토되지 않은 매개 변수 'CommonExtensions.Debug (이 로거, 문자열)'의 매개 변수 '로거'는 사용되지 않습니다. 매개 변수를 제거하거나 메서드 본문에 사용하십시오. FakeItEasy CommonExtensions.cs 101
이것은 분명히 잘못되었습니다. 메서드 본문에서 두 매개 변수를 모두 사용하고 있습니다. 매개 변수 중 하나를 제거하면 코드가 컴파일되지 않습니다.
비슷한 경험을 한 사람이 있습니까? 코드 분석에서 버그를 발견 했습니까?
. (I는 두 구성 하에서 같은 룰을 이용하여 AM)
UPDATE
Logger.Debug()
서명은 다음과 같다 : 질문 업데이트 당으로서
[Conditional("DEBUG")]
public abstract void Debug(Func<string> message);
이 Logger.Debug에 대한 선언 무엇입니까()? –
나는 이것을'public void Debug (Func f)'와 함께 시험해 보았고, 모든 CA 경고를 켜고 나에게 잘 돌아갔다. 이것은 VS2012 Update 1, .Net 4 또는 .Net 4.5 빌드를 사용하는 경우입니다. –
@MatthewWatson 감사합니다. 당신이 대답을 찾도록했습니다. 곧 업데이 트됩니다 –