我想知道为什么代码分析规则CA1305 - 指定IFormatProvider不适用于TryParse方法?
例如,对于"Microsoft所有规则"规则集,代码分析会针对以下代码发出 CA1305 警告:
static void Main(string[] args)
{
string text = args[0];
double value = double.Parse(text);
}
但不为以下代码提供 CA1305 警告:
static void Main(string[] args)
{
string text = args[0];
double value;
if (!double.TryParse(text, out value))
value = 0;
}
我发现这是非常不幸的,因为如果输入字符串不可靠,TryParse 方法是进行解析的正确方法。
有谁知道 TryParse 方法的 CA1305 规则是在某个较新版本的代码分析工具中实现的还是由某个第三方实现的?
此后,
FxCop以及SonarLint等最新工具中已修复此问题。