IDE 能找出逻辑错误吗?

Can a IDE find logic errors?

好的IDE(例如Visual Studio)能找出基本的逻辑错误吗?

或者是否没有 "basic" 逻辑错误,并且所有这些错误都无法被 IDE 检测到?

是的,一些 IDE(如 Visual Studio)有连续​​的语法检查,可以发现一些逻辑错误。然而,逻辑错误只有在代码中有一些奇怪的地方才能被发现,没有人工智能试图弄清楚代码的实际用途。

例如,如果您在 Visual Studio 中用 C# 方法编写此代码:

int a = 1;
int b = 2;

Console.WriteLine(a + a);

然后 IDE 会注意到您从未使用过变量 b,并在变量下方以波浪线的形式发出警告。指向它会显示消息 The variable 'b' is assigned, but its value is never used.

IDE 无法知道您是否打算输出 a + b 而不是 a + a,并且仅使用 a + a 不足以呈现警告,但它可以看到您创建了一个变量 b 并且您可能打算将其用于某些事情。

不是真的。

我认为有时它会发现代码路径可能永远不会执行。

int x = 9;
if (x != 9)
{
    foo();
}

它可能会告诉你你已经声明了一些东西但没有使用它。这是你可以自己抓住的东西。然而,真正的力量在于调试器,您可以在其中使用 "watch" 或 locals/autos 并在任何范围内使用 step-in/out/over 跟踪代码,查看它们何时更改,并自己更改值以查看需要发生什么。这是测试逻辑的好方法。在汇编中,你可以将你的代码移回几行并重复它......它不能保证工作,但你可以覆盖任何东西。

编辑:见https://en.wikipedia.org/wiki/Halting_problem