我准备好部署一个我负责管理的MVC Web应用程序(我没有创建应用程序)。该项目现在正在生产模式下编译,没有错误,但我有一些警告 - 准确地说是9。
现在6与测试项目有关,这很好,但是有两个涉及Web项目。这些错误是:
检测到无法访问的代码
在这两种情况下,这些警告都会抛出返回值,例如
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (true)
{
return new ValidationResult("Passwords don't match", new string[] { OriginalProperty });
}
return null;
}
在上面的示例中,“return null”行会抛出无法访问的代码警告。
这可能是一个愚蠢的问题(所以请放轻松;-)),但这些警告对应用程序的功能有多重要?显然他们是有原因的,但他们不是错误,所以我可以相对好地忽略它们并进行部署吗?
答案 0 :(得分:3)
您的if
条件始终评估为true
(if (true)
),因此此方法等同于:
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
return new ValidationResult("Passwords don't match",
new string[] { OriginalProperty });
}
这就是你得到编译器警告的原因。返回null的最后一行永远不会被命中。就忽略警告而言,我建议你永远不要忽视它们。在某些情况下,警告可能会在运行时导致意外行为。就个人而言,我已经检查了VS中的选项,该选项将警告视为错误,以确保不会错过任何警告。
答案 1 :(得分:1)
达林说的话。
此特定警告不会影响执行时间,性能或可靠性。但是,我试图摆脱警告,以便在开发过程中,我没有警告信息让我(作为开发人员)分散其他可能重要且相关的消息。
您可以尝试将return null
放入else
新创建的if
分支中。它仍然永远不会执行,但如果您将true
中的if
更改为false
,您仍然会拥有正确的代码。你也可以通过这种方式摆脱警告。
答案 2 :(得分:0)
您可以安全地删除无法访问的代码,而无需更改程序当前的工作方式。
无法访问代码的问题在于它可能会显示错误。
而不是if(something-that's-always-true)
,程序员可能真的意味着if(something-else-that's-sometimes-false)
。在这种情况下,您可能需要修复条件。或者,这个bug实际上可能是一个“功能”,因为用户已经开始欣赏并改变它可能会让他们感到不安。
或许他们真的打算使用if(something-that's-always-true)
但是没有意识到它总是被评估为真,所以他们编写了无法访问的代码“以防万一”。在这种情况下,您可能只是删除无法访问的代码。
我确信还有其他无法访问代码的原因。