因此,我下面的代码: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);
}
我清楚地分配String.Format()
结果变量message
。之后我也将该实例传递给Write方法。然而,CA1806升高:
不要忽略方法结果
'Log.WriteGLResult(字符串,对象,params对象[])' 电话“的String.format(的IFormatProvider,字符串,params对象[ ])',但不使用该方法返回的新字符串实例。通过该实例作为参数传递给另一个方法,实例分配给一个变量,或删除的通话,如果它是unnecessary.`
在叫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/zh-cn/library/system.diagnostics.conditionalattribute%28v=vs.110%29.aspx)并且在CA确定是否曾经使用过“消息”之前呼叫结束。你可以尝试提供一个最小化的完整程序,它有你描述的问题吗? – hvd 2014-11-22 23:04:45
@ hvd:是的,就是这样。所有的写入调用(这个和被调用的)都用'[Conditional(“DEBUG”)]'属性装饰。如果我没有这些建设,我不会收到警告。我将它添加到我的问题中的片段。添加它作为答案,我会接受。 =) – 2014-11-22 23:10:54