Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio IDE能发现逻辑错误吗?_Visual Studio_Ide_Logic - Fatal编程技术网

Visual studio IDE能发现逻辑错误吗?

Visual studio IDE能发现逻辑错误吗?,visual-studio,ide,logic,Visual Studio,Ide,Logic,一个好的IDE(例如VisualStudio)能发现基本的逻辑错误吗 或者没有“基本”逻辑错误,而所有这些错误都是IDE无法检测到的?是的,某些IDE(如Visual Studio)有连续的语法检查,可以发现一些逻辑错误。然而,只有当代码中有一些奇怪的东西时,逻辑错误才能被发现,没有人工智能试图找出代码的实际用途 例如,如果您在Visual Studio中用C#方法编写此代码: int a = 1; int b = 2; Console.WriteLine(a + a); 然后IDE会注意到

一个好的IDE(例如VisualStudio)能发现基本的逻辑错误吗

或者没有“基本”逻辑错误,而所有这些错误都是IDE无法检测到的?

是的,某些IDE(如Visual Studio)有连续的语法检查,可以发现一些逻辑错误。然而,只有当代码中有一些奇怪的东西时,逻辑错误才能被发现,没有人工智能试图找出代码的实际用途

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

int a = 1;
int b = 2;

Console.WriteLine(a + a);
然后IDE会注意到您从未使用过变量
b
,并在变量下方以波形线的形式添加警告。指向它将显示消息
变量“b”已分配,但其值从未使用过

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

不太奇怪

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

int x = 9;
if (x != 9)
{
    foo();
}
它可能会告诉你,你没有使用它就声明了一些东西。这是你能抓住自己的东西。但是,真正的功能在于调试器,在调试器中,您可以使用“监视”或“局部变量/自动变量”,并在任何范围内使用“步进/步出/结束”跟随代码,查看它们何时更改,以及自己更改值以查看需要发生什么。这是测试逻辑的好方法。在汇编中,您可以将代码向后移动几行并重复它。。。它不能保证工作,但你可以覆盖任何东西


编辑:请参见

您需要定义基本逻辑错误的含义。逐个错误、缓冲区溢出、无限循环等等。由于大量的“逻辑错误”在某些情况下可能是有效的(在意图上,显然它在语法上是有效的,否则它将是语法错误而不是逻辑错误),因此我对IDE标记它相当恼火。就像我对IDE(cougMicrosoftcough)将strcpy标记为“不安全”而感到恼火一样,当我非常清楚如何正确使用它时:-)任何逻辑错误。我只想知道IDE是否能够找到它们,不管类型或简单性如何。还有未使用的参数。Ok。但是假设当x==9时真的不能调用foo(),而对于其他函数,x确实必须是9。这是一个逻辑错误吗?假设x被某个其他函数赋值,该函数可能会将其更改为9以外的值。我们如何处理那个案件?不,这不能被认为是一个逻辑问题。这就是停止问题,也是为什么最终真正的力量在于用户和调试器。