따라서 내 다음 코드를CA1806 DoNotIgnoreMethodResults가 잘못 제기 되었습니까?
[Conditional("DEBUG")]
internal static void WriteGLResult(string methodName, object result,
params object[] args)
{
string message = String.Format(CultureInfo.InvariantCulture, "{0}({1}) = {2}",
methodName, String.Join(", ", args), result);
Write(LogType.Information, Category.GLResult, 2, message);
}
내가 분명히 변수 message
에 String.Format()
결과를 할당하고있다. 나중에 그 인스턴스를 Write 메서드에 전달합니다. 그러나 CA1806가 발생합니다 :
사용하고 unnecessary.` 경우 호출을 제거,방법은
결과 무시 'Log.WriteGLResult (문자열, 객체를 PARAMS [] 오브젝트)'[전화 '및 String.format (IFormatProvider를, 문자열, PARAMS 개체를하지 마십시오 ]) '하지만 메서드가 반환하는 새 문자열 인스턴스는 사용하지 않습니다. 다른 방법에 대한 인수로 인스턴스를 전달 변수에 인스턴스를 할당하거나, 나는 또한 문자열을 호출
Write
방법에서
format
이 이름 , 다음과 같이 사용됩니다 :
[Conditional("DEBUG")]
private static void Write(LogType logType, Category category, int stackTraceFrameSkips,
string format, params object[] args)
{
// ...
string message = String.Format(CultureInfo.InvariantCulture, format, args);
// ...
}
이 경고를 수정하는 방법을 모르겠습니다. 그리고 나는 CA가 이것을 잘못 제기하는 것을 의심합니다.
도와 주시겠습니까?
어떻게 '쓰기'가 정의되어 있습니까? 내 첫 번째 추측은 ['ConditionalAttribute'] (http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute%28v=vs.110%29.aspx)가 적용된 것입니다. CA에 'message'가 사용되었는지 여부를 결정하기 전에 호출이 제거됩니다. 당신이 설명하는 문제가있는 최소한의 완전한 프로그램을 제공하려고 할 수 있습니까? – hvd
@hvd : 예, 그렇습니다. 모든 쓰기 호출 (이 호출 된 호출과 호출 된 호출)은'[조건부 ("DEBUG")] 속성으로 꾸며진다. 내가 이것들없이 지으면, 나는 경고를 얻지 못한다. 내 질문에 발췌 문장에 추가했습니다. 대답으로 추가하면 받아 들일 것입니다. =) –