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 跟踪代码,查看它们何时更改,并自己更改值以查看需要发生什么。这是测试逻辑的好方法。在汇编中,你可以将你的代码移回几行并重复它......它不能保证工作,但你可以覆盖任何东西。
好的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 跟踪代码,查看它们何时更改,并自己更改值以查看需要发生什么。这是测试逻辑的好方法。在汇编中,你可以将你的代码移回几行并重复它......它不能保证工作,但你可以覆盖任何东西。