簡體   English   中英

如何在沒有ca1804的情況下驗證構造函數參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM