![](/img/trans.png)
[英]Code Analysis does not show CA1804 warning despite unused local string variable in C# (VS2010 Premium)
[英]How to validate constructor arguments without ca1804
假設我想驗證一些參數,以供以后使用的對象的構造函數使用。 同樣,假設驗證這些論點的標准是精心設計的。
例如,我要檢查創建X509Certificate2所需的某些項目是否合法。 我一直在try {}中調用構造函數並捕獲異常,但是靜態分析(正確)報告“ CA1804刪除了未使用的局部語言。方法聲明了局部變量,但未使用該變量,除非可能作為賦值語句的接收者。 “
考慮以下代碼:
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。
有一個更好的方法嗎?
我通常避免在構造函數中做很多工作(尤其是可能拋出的事情)
因此,我的建議是不要嘗試抑制FXCop警告,而應使用例如僅檢查參數的靜態方法。
如果您不能/不想更改X509Certificate2類代碼,那么我會像Craig W.那樣做:建議:只需放置一個
[SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals",
Justification = "Testing parameters only")]
在上面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.