2015-05-09 104 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

我認爲這個例子符合邏輯錯誤。 –