[英]C# Code Analysis CA2000
我有一個功能,我認為我已經修復了代碼分析中的CA2000警告,但它不會消失。 警告在SqlCommand上。 這是功能:
protected internal void LogUserSession(int? managerID)
{
using (var sqlCommand = new SqlCommand())
{
sqlCommand.SetCommand("usp_UserActivity_Create");
SqlParameter prmSessionID = new SqlParameter();
prmSessionID.ParameterName = "@sessionID";
prmSessionID.Direction = ParameterDirection.Input;
prmSessionID.SqlDbType = SqlDbType.VarChar;
prmSessionID.Size = 32;
prmSessionID.SetValue(SessionID);
SqlParameter prmUsername = new SqlParameter();
prmUsername.ParameterName = "@username";
prmUsername.Direction = ParameterDirection.Input;
prmUsername.SqlDbType = SqlDbType.VarChar;
prmUsername.Size = 32;
prmUsername.SetValue(Username);
SqlParameter prmLoginID = new SqlParameter();
prmLoginID.ParameterName = "@loginID";
prmLoginID.Direction = ParameterDirection.Output;
prmLoginID.SqlDbType = SqlDbType.Int;
sqlCommand.Parameters.Add(prmSessionID);
sqlCommand.Parameters.Add(prmUsername);
sqlCommand.Parameters.Add(prmLoginID);
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.MainApp))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryTryCatch();
if (prmLoginID.Value != DBNull.Value) LoginID = Convert.ToInt32(prmLoginID.Value);
}
}
}
我有另一個功能,對我來說看起來沒有什么不同,但沒有與之關聯的CA2000警告。 這是功能:
public static bool IsAvailable(string username)
{
using (var sqlCommand = new SqlCommand())
{
sqlCommand.SetCommand("usp_UsernameIsAvailable");
var prmUsername = new SqlParameter();
prmUsername.ParameterName = "@username";
prmUsername.Direction = ParameterDirection.Input;
prmUsername.SqlDbType = SqlDbType.VarChar;
prmUsername.Size = 32;
prmUsername.SetValue(username);
var prmReturnValue = new SqlParameter();
prmReturnValue.ParameterName = "@returnValue";
prmReturnValue.Direction = ParameterDirection.ReturnValue;
prmReturnValue.SqlDbType = SqlDbType.Bit;
sqlCommand.Parameters.Add(prmUsername);
sqlCommand.Parameters.Add(prmReturnValue);
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.ComplianceApps))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryTryCatch();
return Convert.ToBoolean(prmReturnValue.Value);
}
}
}
我不明白這里發生了什么以及我需要做些什么來解決它。
CA2000警告因引起誤報而臭名昭着。 它所做的一件事是當它找到超過16個可能拋出異常的可能位置時,它只是停止查看並標記CA警告。
可以在此處找到與Microsoft的回復非常相似的問題: http : //social.msdn.microsoft.com/Forums/en-US/vstscode/thread/90f993a3-6bdf-4b62-9982-9247a655406d/
連接錯誤跟蹤此問題: https : //connect.microsoft.com/VisualStudio/feedback/details/725836/warning-ca2000-is-fired-on-a-sqlcommand-with-many-sqlparameters#details
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.