假设我想验证稍后要使用的对象的构造函数的一些参数。另外,假设验证这些参数的标准是详细的。
例如,我想检查创建X509Certificate2所需的一些项目是否合法。我一直在try {}中调用构造函数并捕获异常,但是静态分析(正确)报告" CA1804删除未使用的locals方法声明一个局部变量但不使用该变量,除了可能作为接收者转让声明。"
考虑以下代码:
string password = "bosco";
byte[] certyBytes = new byte[]{1,2,3};
try
{
X509Certificate2 tpCert = new X509Certificate2(certBytes, password);
}
catch (CryptographicException)
{
log.Debug("Bad cert.");
}
由于未使用的tpCert,静态分析报告了上面第5行的CA1804。
有更好的方法吗?
答案 0 :(得分:0)
我通常避免在构造函数中做很多工作(特别是可以抛出的东西)
所以我的建议是不要试图压制FXCop警告,而是使用例如一个只检查参数的静态方法。
如果您不能/不想更改X509Certificate2类代码,那么我会像Craig W.建议的那样:只需放置一个
[SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals",
Justification = "Testing parameters only")]
就可以了。