Visual Studio中加载用于验证的String.Format方法

string.Format是一个非常危险的方法。 有很多的可能出错,没有任何编译错误的事情:

string.Format("{0{", text); string.Format("{1}", text); string.Format("(0)", text); string.Format("{0}", text1, text2);

我正在寻找一种方式来找到编译时间这个问题。 如果我没有记错,ReSharper的发现一些这些错误,但它太丰富了我的血液。

--------------解决方案-------------

ReSharper的这是否为你 - 即使在编辑时:-)。

但是要知道,类似的事情

String.Format("{0} blabla", foo, bar);

不要产生错误(毕竟,决定隐藏价值是完全没有问题)。

字符串格式验证.NET2.0

经过一番研究,我发现原来的FxCop已包含字符串格式检查规则Usage Rules\Provide correct arguments to formatting methods )。 它甚至标识@Sklivvz答案的例子。 不幸:

  1. 该规则只存在于旧版本1.35,但不是在1.36(见:在V1.36停产的FxCop规则)。
  2. lambda表达式中的代码产生任何规则的错误或异常消息的存在它只是停止检查没有通知 。 我猜这是因为V1.35使用.NET运行库2.0。
  3. 该规则只包括呼叫 Console.WriteConsole.WriteLinestring.FormatStringBuilder.AppendFormat我设法调整它 (使用反射)也涵盖Common.Logging.ILog.DebugFormat ,但我敢肯定它是相矛盾与MS EULA(“你不得反向工程,反编译或拆解......”)。

所以,你可以放心地使用的FxCop进行测试串在你的.NET2.0应用格式。


但是关于新版本的.NET是什么?

对于所有的你更多先进的最新版本工作,我已经写了 检查常见的格式错误模式字符串一个了StyleCop规则。 这是远远不够完善和产量的误判,但仍然掩盖配发。

我想检查新的FxCop SDK的一个更全面的解决方案。

我会在这里发布我的结论。

ReSharper的帮助您识别它,但它是非常重,一定要小心使用,如果你是对现有应用程序的工作。

分类:C# 时间:2012-01-01 人气:2
分享到:

相关文章

  • 如何“看”在Visual Studio中的字符串的字符值? 2012-05-03

    我记得我可以在调试过程中,以使其显示在不同的格式在Delphi中添加改性剂到一个观察的变量. 如"海峡,M"将显示字符串中的二进制表示. 同样地,我想看看一个字符串的二进制表示看人品值.NET应用程序在Visual Studio 2008中有什么做的最简单的方法是什么? 注:"十六进制显示"选项不会对字符串工作. --------------解决方案------------- 你总是可以创建一个DebuggerVisualizer. (还是看http://karls

  • 的std ::在Visual Studio中的字符串的具体行为? 2014-03-05

    我有一个项目,我需要读/写大文件. 我已经决定使用ifstream的阅读::()把那些文件加载​​到内存中的一个单一的传球,成为一个标准::字符串. (这似乎是做C ++中的最快的方法:http://insanecoding.blogspot.com/2011/11/how-to-read-in-file-in-c.html和http:// insanecoding. blogspot.com/2011/11/reading-in-entire-file-at-once-in-c.html) 当

  • Visual Studio中确实在VB.Net没有标志未终止字符串常量 2014-08-12

    我注意到,如果我离开关闭终止双引号的字符串在Visual Studio 2010中恒定的,没有错误,甚至警告,即 Dim foo as String = "hi 但是,我们使用的是标志一个错误的持续集成工具: error BC30648: String constants must end with a double quote. 发生了什么? 是否有在VB.Net一些语言规则,使一个终端双引号可选的"有时"? 有没有在Visual Studio中的一些设置,这将使它标记为错

  • 是有可能得到Visual Studio中的索引源代码,以提高字符串搜索? 2012-01-05

    我经常使用的字符串搜索功能在VS2008一个完整的解决方案. 有没有办法通过让VS2008索引所有的源代码和配置文件,类似于谷歌如何桌面索引文件,以提高其搜索速度? --------------解决方案------------- 虽然我不认为这是可能的Visual Studio中做的,你可能需要使用WinGrep,或其他的grep工具做这样的搜索,而不是. 这不是Visual Studio中的支持功能. 在文件中查找功能只需经过搜索指定的文本文件和不带任何索引的优势. 这是可能使用其他第三方组件

  • 我使用的Visual Studio作为我的主要IDE.I要在Visual Studio中格式化JScript代码,但我没有得到选项 2012-09-01

    我知道有格式化代码在Visual Studio中的JScript格式选项. 我用Google搜索,我发现路工具 - >选项 - > texteditor->的JScript格式. 我已经尝试了所有这些东西,但我没有在我的Visual Studio 2008中找到JScript的选项我会很高兴,如果任何一个可以帮助我在Visual Studio中格式化代码.

  • 版本比较web.config中是很难的,任何方式,以防止IIS管理器从非Visual Studio的格式在格式化的Web.config不同? 2012-10-10

    这让我发疯. Visual Studio中没有Web.config文件格式以同样的方式比IIS管理器,防止不同版本或两个工具相同的文件编辑方便版本比较. 在Visual Studio中编辑一个Web.config直通向导(如添加参考),或者当你点击编辑\格式文档(按Ctrl + K,Ctrl + D键),Visual Studio的格式在一个美丽的方式XML. 不幸的是,如果更改IIS中的值,它会与不同的风格重新格式化. 你知道有什么解决方法吗? 卡尔 --------------解决方案---

  • 正则表达式中的字符串在Visual Studio中搜索词 2013-06-04

    我要寻找我的所有的代码库的"URL",并用"URL"取代. 如果我在Visual Studio中搜索网址我也得与它"网址"我所有的变量. 任何人有一个正则表达式,我可以用它来只能找到URL中带引号的字符串,例如"使用此URL:"? 编辑 我一直在寻找寻找一个快速和肮脏的方式找到设计师文字和硬编码字符串有URL中的字符串,并将其更改为URL. --------------解决方案------------- 我真的最终需要为: (

  • 在Visual Studio中重新缩进(格式化)最小化的jQuery / javascript文件 2014-11-24

    我已经下载了一个最小化的jQuery插件文件,需要做一些定制按我的项目要求. 我使用Visual Studio 2010并且由于文件被最小化,它正成为很难对其进行调试或执行任何修改. 有没有一种方法,我可以重新格式化js文件? 谢谢 --------------解决方案------------- 您可以到http://jsfiddle.net,代码粘贴到JavaScript的窗格,然后单击添加格式后面Tidy Up上方. 您可以使用jsbeautifier.org JavaScript的美化.

  • Visual Studio中/ ReSharper的代码格式化 - C# 2013-01-09

    当创建使用对象初始化器语法的新的类型,Visual Studio中自动将括号中的新关键字后的类型一致 喜欢这个 MyType myType = new MyType { }; 不过,我宁愿它没有这样做,而是把它像这样 MyType myType = new MyType { }; 任何想法如何做到这一点 - 我已经通过所有的Visual Studio格式选项并不能找到一个合适 有任何想法吗? --------------解决方案------------- 从我的最流行的答案在这里: 在大括号布局

  • 重命名测井方法参数字符串在Visual Studio中的正则表达式? 2013-09-07

    在Visual Studio中,我很好奇,想知道正则表达式来代替: MyLog.LogFatal("Error E20111205-1147. Custom error.\n"); 有了这个: MyLog.LogFatal("{0}Error E20111205-1147. Custom error.\n",TPrefix(this)); 它有任何错误号,即E12345678-1234工作. 更新 使用"Find..Find和Replace..Quick替

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.561 (s). 10 q(s)