VS2010 调试警告 解决方法
来源:互联网 发布:汉王扫描软件 编辑:程序博客网 时间:2024/05/16 05:51
突然心血来潮,把vs2010的代码规则设置为微软所有规则,分析过后,获益匪浅,特此记录。下面前半部分是网上另外一位兄弟的成果,转载过来的: 一、网页方面警告: 2、字符串或整数在定义时,系统都会自动初始化,不需要赋值 3、关于DataTable 和DataSet 的定义 解决方法:在indexof中加一参数:int pos = s.IndexOf("bb", StringComparison.OrdinalIgnoreCase); (该参数是要忽略大小写的,参数意义看下文) 5、警告内容: CA1822 : Microsoft.Performance : 从未使用 'IdAuthenticate.CheckidCard(string)' 的“this”参数(Visual Basic 中为“Me”)。根据需要,将成员标记为 static (Visual Basic 中为“Shared”),或者在方法体或至少一个属性访问器中使用“this”/“Me”。 8、Convert转换警告 int.ToString();可改为int.ToString(CultureInfo.InvariantCulture); 三、名称命名规范警告: 5、CA1709 : Microsoft.Naming : 更正命名空间名称“NetShop.usrgl_files”中“files”的大小写,将其改为“Files”。 6、命名中不要出现login、logout,要 用 logOn和logOff替代。 四、未解决问题: 1、警告内容:CA1020 : Microsoft.Design : 考虑将“NumberTwoNetShop.WebService”中定义的类型与另一个命名空间合并。 4、警告内容:CA1001 : Microsoft.Design : 在 'DataBase' 上实现 IDisposable,因为它创建下列 IDisposable 类型的成员: 'SqlConnection'。如果以前提供过 'DataBase',对于现有使用者来说,向此类型添加用于实现 IDisposable 的新成员属于重大更改。 8、警告内容:CA1031 : Microsoft.Design : 修改 'IdAuthenticate.BtnUpload_Click(object, EventArgs)' 以便捕捉比 'Exception' 更具体的异常,或者再次引发该异常。 11、警告内容:CA2234 : Microsoft.Usage : 修改 'BookDetails.BindData()' 以调用 'WebRequest.Create(Uri)' 而不调用 'WebRequest.Create(string)'。 补充:警告8CA1824 : Microsoft.Performance : 由于程序集 'ComTopGisEx.exe' 包含基于 ResX 的资源文件,因此请使用 NeutralResourcesLanguage 特性来标记它,并指定该程序集内的资源所采用的语言。这会改进首次检索资源时的查找性能。 [assembly: NeutralResourcesLanguage("zh-CN", UltimateResourceFallbackLocation.Satellite)] 警告8CA2210 : Microsoft.Design : 用强名称密钥对 'ComTopGisEx.exe' 进行签名。 解决方法 属性 程序集 签名 为程序集签名 警告8CA1014 : Microsoft.Design : 使用 CLSCompliant(true)来标记 'ComTopGisEx.exe',因为它公开外部可见的类型。ComTopGisEx [assembly: CLSCompliant(true)] AssemblyInfo.cs 警告35CA1306 : Microsoft.Globalization : 只要 'DataTableTemplete.GetEquipmentTypesDTTemplate()' 创建了 DataTable 类型的实例,就必须设置这一 Locale 属性。E:/Document/Visual Studio 2005/Projects/ComTopGisExWPF/ComTopGisEx/Common/DataTableTemplete.cs43 dtResult.Locale = CultureInfo.InvariantCulture; 警告10CA1305 : Microsoft.Globalization : 由于 'string.Format(string, object, object, object)' 的行为可能会因当前用户的区域设置不同而不同,请将 'OracleUtil.OracleUtil(string, string, string)' 中的此调用替换为对 'string.Format(IFormatProvider, string, params object[])' 的调用。如果要向用户显示 'string.Format(IFormatProvider, string, params object[])' 的结果,请指定 'CultureInfo.CurrentCulture' 作为“IFormatProvider”参数。或者,如果软件将存储和访问此结果(例如,当将此结果保留到磁盘或数据库中时),则指定 'CultureInfo.InvariantCulture'。E:/Document/Visual Studio 2005/Projects/ComTopGisExWPF/ComTopGisEx/Common/OracleUtil.cs63 试用string.format(CultureInfo("zh-cn"),...)
1、象link meta br img这样的空元素必须以“/>”结束,img要有alt属性
如:<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<img src="/homeimg/a_05.gif" alt="1" width="9" height="9" />
2、height不是table的有效属性
解决方法:可以把height下放到td中。
3、background 不是td的有效属性
如: <td width="75" background="/homeimg/hg_2.gif">高老庄</a></td>
解决方法:<td style="width:75px; height:25px;background:url(/homeimg/hg_1.gif)">
参 考:background与background-image的区别和应用
http://www.qujingwang.com/Show.aspx?bookID=365
4、警告内容:验证 (XHTML 1.0 Transitional): 此名称包含大写字符,而名称中不允许使用大写字符。
如:“<IMG height=29 alt=电信用户下载地址 ... ...”
5、验证(XHTML 1.0 Transitional): 不支持元素“marquee”、不支持的还有embed
6、验证 (XHTML 1.0 Transitional): 属性值必须用引号括起来。
如:height="29"
7、验证 (XHTML 1.0 Transitional): 元素“script”缺少必需的属性“type”。
8、验证 (XHTML 1.0 Transitional): 属性“width”被视为已过时。建议使用较新的构造。
解决方法: 放到style里面去,<div style ="width:100px" ></div>
过时的属性列表:width,border,height,align,bgcolor,font,name
9、align的属性值不包括“absmiddle”
10、验证 (XHTML 1.0 Transitional): 元素“form”不能嵌套在元素“table”中、元素“tr”不能嵌套在元素“form”中。
二、程序方面警告:
1、关于字符串为空或不为空
1) if(strTitle=="")
2)if(strTitle==String.Empty)
应改为 if(String.IsNullOrEmpty(strTitle))
3)if(strTitle!="")
4)if(strTitle!=String.Empty)
应改为 if (!String.IsNullOrEmpty(txtSeach.Text))
警告内容:CA1820 : Microsoft.Performance : 使用“String.IsNullOrEmpty”调用来替换 'Header.ImbtnSeach_Command(object, CommandEventArgs)' 中的 'string.operator !=(string, string)' 调用
string strTitle=“”;
int iHIght=0;
private SqlConnection con = null;
以上三种初始化没必要,请去掉。
警告内容:将类型为 'int' 的字段 'UserOperate.age' 初始化为 0。由于此初始化过程将由运行时自动完成,因此请移除它。
警告内容:CA1306 : Microsoft.Globalization : 只要 创建了 DataTable 类型的实例,就必须设置这一 Locale 属性。
警告指向:
a) DataTable table = new DataTable();
table = userAccount.getUserMoneyList(strUserID);
b)DataSet ds = new DataSet();
ds = expertopic.FindTopicByUserID("ExperTopic", strUserID);
解决方法:
a) table.Locale = CultureInfo.InvariantCulture;
b) ds.Locale = CultureInfo.InvariantCulture;
在该cs文件中添加引用using System.Globalization;
相关内容: DataTable中不区分全角数字和半角数字的问题,在一个项目中突然客户反映原来使用得好好的功能现在不能用了,问现象也说不出什么。只是说提示数据重复了。到现场后发现原来DataTable中将全角数字和半角数字认为是相同的。故本来不同的数据也认为是相同的数据了。
网上查资料得知,添加如下代码可以解决:
DataTable.Locale = CultureInfo.InvariantCulture;
DataTable.CaseSensitive = true;
参考:http://msdn.microsoft.com/en-us/system.data.datatable.locale(zh-tw).aspx
4、IndexOf()和LastIndexOf()
警告内容: CA1307 : Microsoft.Globalization : 调用不显式提供 StringComparison 的 'string.IndexOf(string)'。应将其替换为对 'string.IndexOf(string, StringComparison)' 的调用。
参考内容:http://www.qujingwang.com/Show.aspx?bookID=385
解决方法:在方法定义前加 static
6、警告内容: 声明了变量“exp”,但从未使用过
变量“sql”已赋值,但其值从未使用过
7、Page.RegisterStartupScript("openwin ", "<script>alter('请输入要搜索的内容!')</script>");
警告内容: “System.Web.UI.Page.RegisterStartupScript(string, string)”已过时:“The recommended alternative is ClientScript.RegisterStartupScript(Type type, string key, string script). http://go.microsoft.com/fwlink/?linkid=14202”
警告内容:CA1305 : Microsoft.Globalization : 由于 'Convert.ToInt32(string)' 的行为可能因当前用户的区域设置不同而不同,请将 'DataOperate.DllBind(参数s)' 中的此调用替换为对'Convert.ToInt32(string, IFormatProvider)' 的调用。如果要向用户显示 'Convert.ToInt32(string, IFormatProvider)' 的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数;另外,如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。
labTPage.Text = Convert.ToString(ps.PageCount);
private DateTime leavetime = Convert.ToDateTime(DateTime.Now.ToShortDateString());
int bookID = Convert.ToInt32(Request.QueryString.Get("bookID"));
iFileSize =(float) Convert.ToDouble(lblFileSize.Text);
以上四例会出同样的问题
解决方法是:在ToDouble、ToString的参数中增加参数CultureInfo.InvariantCulture,如上例可改为iFileSize =(float) Convert.ToDouble(lblFileSize.Text,CultureInfo.InvariantCulture);
需引用 using System.Globalization;
String.ToLower();可改为String.ToLower(CultureInfo.InvariantCulture);
int.Parse(Wi[i]) 可改为 int.Parse(Wi[i],CultureInfo.InvariantCulture) ;
但并不是所有的ToString和ToLower改了以后都正确,看调试提示吧。
1、 int intHight;
警告内容:不好的变量定义 ,变量名字中不要包含int。
2、当变量定义中包含ID,OK时,D要小写,K要小写,即写成Id,Ok
如 string UserId
3、定义方法(函数)时,首字母要大些, 如:
a) protected void BtnFind_Click(object sender, EventArgs e){ ... ... }
b) protected void GVsearch_RowDataBound(object sender, GridViewRowEventArgs e){}
c)protected void GvlWordInfo_PageIndexChanging(object sender, GridViewPageEventArgs
注:首字母大写,后边第一个是小写,第二个是大写不行的。如:protected voidGvLWordInfo_PageIndexChanging(object sender, GridViewPageEventArgs e)
4、警告内容: Microsoft.Naming : 从命名空间名称“NetShop.App_Code”中移除下划线。 命名空间或类名称中不允许下划线。
说明:在此usrgl_files是个文件夹。这个命名有两个问题,使用了下划线和首字母没大写。
7、方法(函数)的参数定义要用小写。
8、错误所指:BooksDetails booksDetails = new BooksDetails();
警告内容:CA1500 : Microsoft.Maintainability : 'booksDetails' ('SubmitExperPassed.BindInfo()' 中声明的变量与该类型的某一实例字段同名。请更改其中一项的名称。
修改方法:实例名称和类或命名空间同名,方法中定义的变量与方法同名,修改之。
9、定义方法的参数名称不能和类的全局变量同名。
2、警告内容:CA2210 : Microsoft.Design : 用强名称密钥对 'NumberTwoNetShop.dll' 进行签名。
3、警告内容:CA1014 : Microsoft.Design : 使用 CLSCompliant(true)来标记 'NetShop.dll',因为它公开外部可见的类型。
警告所指: public class DataBase{}
5、警告内容:CA1822 : Microsoft.Performance : 从未使用 'DataBase.MakeInParam(string, SqlDbType, int, object)' 的“this”参数(Visual Basic 中为“Me”)。根据需要,将成员标记为 static (Visual Basic 中为“Shared”),或者在方法体或至少一个属性访问器中使用“this”/“Me”。
在本类中调用方法,在方法名称前加上static即可,但若在别的类中定义实例再调用,加上static就会出错。
6、警告内容:CA1502 : Microsoft.Maintainability : 'BookDetails.BindData()' 的圈复杂度为 31。重写或重构该方法,以便将复杂度降低到 25。
警告原因:我的方法行数太多,逻辑是复杂点,变成小函数就应该OK了。
7、警告内容:CA1031 : Microsoft.Design : 修改以下内容 以便捕捉比 'object' 更具体的异常,或者再次引发该异常。
警告所指:
try
{
bookID = .....;
}
catch
{
bookID = 0;
};
catch 后边的参数没用,我就不想要。
警告所指:try
{
System.IO.Directory.CreateDirectory(path);
}
catch (Exception ex)
{
Response.Write("<script language=javascript>alert('文件上传失败原因:"+ex.Message+"!')</script>");
return;
}
9、警告内容:CA1304 : Microsoft.Globalization : 由于 'string.ToLower()' 的行为可能因当前用户的区域设置不同而不同,请将 'Remark.TakeRemark(string)' 中的此调用替换为对 'string.ToLower(CultureInfo)' 的调用。如果要向用户显示 'string.ToLower(CultureInfo)' 的结果,请将“CultureInfo.CurrentCulture”指定为“CultureInfo”参数;如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。
我改成string.ToLower(CultureInfo.InvariantCulture)后,又报警告:
Microsoft.Globalization : 在方法 'IdAuthenticate.BtnUpload_Click(object, EventArgs)' 中,将对 'string.ToLower(CultureInfo)' 的调用替换为 String.ToUpperInvariant()。
10、警告内容:CA1819 : Microsoft.Performance : 将 'GetValidateCode.Colors' 更改为返回集合或将其转换为方法。
警告所指:
public Color[] Colors
{
get { return colors; }
set { colors = value; }
}
警告所指:myReq = (HttpWebRequest)WebRequest.Create(url);
url我定义成了string类型
12、警告内容:CA0060 : 无法找到间接引用的程序集“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。此程序集不是分析所必需的,但是分析结果可能不完整。此程序集已由 'AjaxControlToolkit.dll' 引用。
以上警告还没解决,望高人通过评论指点。其他警告和解决方法望达人补充!
- VS2010 调试警告 解决方法
- VS2010 调试警告 解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010 调试窗口一闪而过解决方法
- VS2010调试窗口一闪而过解决方法
- VS2010/VS2013 调试窗口一闪而过解决方法
- 调试警告
- VS2010下关闭警告
- vs2010忽略警告
- 关于VS2010调试时启动速度慢的解决方法
- VS2010 无法启动调试 拒绝访问 的解决方法
- VS2010调试
- VS2010调试
- Linux驱动入门——几个简单的Linux 模块
- 编程多年,初窥门径
- 推荐一些经典书籍,100多本,Linux编程和Linux内核也很多
- InstallShield脚本编程基本语法
- [.NET]C# access数据库连接
- VS2010 调试警告 解决方法
- SQL函数大全
- GestureDetector事件详解
- GUI加菜单 matlab
- Snake 游戏深入解析
- Struts2框架安全缺陷
- SQL注入专题--整理帖
- In & Exists & Join 分析测试
- ATL是什么