当前位置: 首页 > 编程语言 > C#

如何警告类型转换引起的潜在算术错误?分享

时间:2023-04-10 11:59:22 C#

如何警告类型转换导致的潜在算术错误?我正在用C#编写一个计算模块,我遇到了这个:doublev=4/100;我知道这是一个糟糕的初始化返回v=0.0而不是v=0.04c#规则说我必须确保至少有一个成员是double,像这样:doublev=(double)4/100;双v=4.0/100;然而,我有很多涉及整数变量操作的初始化,我懒得逐行检查我的代码来检测这样的错误。相反,编译器是否可能对此发出警告?好吧,经过一番尝试之后,我有了一个解决方案。我用这篇文章来解决这个问题。我使用StyleCop,因此您需要获取并安装它。然后你可以下载我的C#项目MathematicsAnalyzer。首先,我没有考虑所有类型转换不匹配的情况。其实我只容纳了一部分。基本上,我检查该行是否包含“double”后跟一个空格。我知道这可能会导致错误警告,因为类的末尾可能是double或其他任何东西,但我会留给您找出如何正确隔离类型的问题。如果找到匹配项,我会检查它是否匹配此正则表达式:double[][A-Za-z0-9]*[]?=(([]?[0-9]*d[]?/[]?[0-9]*;)|[]?[0-9]*[]?/[]?[0-9]*d;)如果它与这个正则表达式不匹配,那么我添加违规。此正则表达式将匹配以下任何一项:以上均不会导致违规。正如目前所写的,如果你不使用“d”,它几乎违反了规则。您需要添加额外的逻辑来考虑显式转换操作数的其他可能方式。在我写这篇文章时,我刚刚意识到在两个操作数上都有'd'很可能会引发异常。哎呀。最后,我无法让StyleCop正确显示我的违规行为。它一直给我一个关于规则不存在的错误,即使有第二双眼睛我们也找不到解决方案,所以我破解了它。该错误显示了您要查找的规则的名称,因此我只是将规则的名称设为描述性的名称,并在其中包含行号。要安装自定义规则,请构建MathematicalAnalyzer项目。关闭VisualStudio并将DLL复制到StyleCop安装目录中。当您打开VisualStudio时,您应该会在StyleCop设置中看到这些规则。我使用的文章的第5步和第6步显示了在哪里执行此操作。这在整个解决方案中一次只会出现一个违规,因此您必须修复它显示的违规,然后再次运行StyleCop以找到下一个违规。可能有办法解决这个问题,但我没电了,我被困在这里了。请享用!本文介绍如何设置在运行代码分析时可以显示警告和不显示警告的自定义代码分析规则。http://blog.tatham.oddie.com.au/2010/01/06/custom-code-analysis-rules-in-vs2010-and-how-to-make-them-run-in-fxcop-and-VS2008也是/以上是C#学习教程:类型转换导致的潜在算术错误如何警告?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: