2015-05-09 51 views
-1

一个好的IDE(例如Visual Studio)能找到基本的逻辑错误吗?IDE可以找到逻辑错误吗?

还是没有这样的事情作为“基本”的逻辑错误,所有这些错误都无法被IDE检测到?

+0

您需要_define_您的意思是基本逻辑错误。逐个错误,缓冲区溢出,无限循环等等。由于在某些情况下,大量的“逻辑错误”可能是有效的(在意图上,显然它在语法上是有效的,否则它将是一种语法而不是逻辑错误),我会在我的IDE标记它时感到恼火。就像我对一个IDE(*咳嗽*微软*咳嗽*)恼怒,当我知道如何正确使用它时,将'strcpy'标记为“不安全”,就好像:-) – paxdiablo

+0

任何逻辑错误。我只想知道IDE是否能够找到它们,无论类型或简单性如何。 – isif

回答

1

是的,一些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和你可能打算把它用于某些东西。

+0

未使用的参数。 –

1

不是。

有时候它可以代表我认为代码路径可能永远不会执行。

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

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

+0

我认为这个例子符合逻辑错误。 –