gpt4 book ai didi

C#代码分析CA2000

转载 作者:太空狗 更新时间:2023-10-29 23:33:31 24 4
gpt4 key购买 nike

我有一个函数,我认为我已经修复了代码分析中的 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

关于C#代码分析CA2000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com