抑制静态代码分析警告CA1806用于TryParse调用

Tim*_*Tim 7 c# fxcop coding-style

我想知道 在使用FxCop时人们对CA1806(DoNotIgnoreMethodResults)静态代码分析警告的看法.

我有几种情况,我使用Int32.TryParse来提取保存在文件中的内部配置信息.我最终得到了很多看起来像的代码:

Int32.TryParse(someString, NumberStyles.Integer, CultureInfo.InvariantCulture, out intResult);
Run Code Online (Sandbox Code Playgroud)

MSDN说如果出现故障,intResult的默认结果为零,这正是我想要的.

不幸的是,此代码将在执行静态代码分析时触发CA1806.似乎有很多冗余/无用的代码来修复错误,如下所示:

bool success = Int32.TryParse(someString, NumberStyles.Integer, CultureInfo.InvariantCulture, out intResult);
if (!success)
{
 intResult= 0;
}
Run Code Online (Sandbox Code Playgroud)

我应该抑制此消息或咬住子弹并添加所有这些冗余错误检查?或者也许某人对处理这样的案件有更好的想法?

谢谢!

Cor*_*rch 7

为什么不用TryParse你所追求的行为将你的s 重构为一个函数?:

static int ParseOrDefault(string someStr)
{
    int result = 0;
    if(int.TryParse(someStr, out result))
    {
        return result;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以避免烦人的警告并抛弃冗余代码.一个单独的功能可以使您的期望明确,不会产生混淆的余地.

  • @Firoso - 这也可以作为字符串扩展方法(以不同方式命名).多次退货不会给我带来麻烦,特别是在短期功能中.Bruce Eckel似乎也不介意他们:http://onthethought.blogspot.com/2004/12/multiple-return-statements.html.但是如果你不喜欢它们,请务必避免使用它们. (3认同)

Ala*_*tts 1

镇压走!

FxCop/代码分析只是真正的指导方针。它可以帮助改进部分代码,特别是如果它被分发给其他开发人员使用,但最终,它只是一个指南,您可以根据自己的喜好进行编码。