2013-04-20 2 views
1

내 방법은 다음과 같습니다.릴리스 구성에서 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); 
+1

이 Logger.Debug에 대한 선언 무엇입니까()? –

+0

나는 이것을'public void Debug (Func f)'와 함께 시험해 보았고, 모든 CA 경고를 켜고 나에게 잘 돌아갔다. 이것은 VS2012 Update 1, .Net 4 또는 .Net 4.5 빌드를 사용하는 경우입니다. –

+0

@MatthewWatson 감사합니다. 당신이 대답을 찾도록했습니다. 곧 업데이 트됩니다 –

답변

1

, Logger.Debug()을 갖는다 Conditional 속성이 설정되어 이것이 원인입니다.

1

당신은 조건부 "CODE_ANALYSIS" 속성을 추가하여 문제를 해결할 수 있습니다

[Conditional("DEBUG")] 
[Conditional("CODE_ANALYSIS")] 
public abstract void Debug(Func<string> message); 

(필자는 same problem을했고 a solution을 발견했다.)

+0

고마워! IIRC 이것은 https://github.com/FakeItEasy/FakeItEasy의 문제 였지만 이후 전체 클래스가 제거되어 문제가 사라졌습니다. –

관련 문제