C#编译器在每次编译时都不会一次报告所有错误?

C#编译器在每次编译时都不会一次报告所有错误?,第1张

概述当我编译这个项目时,它在错误列表窗口中显示为400个错误,然后我去错误的站点,修复一些,数字表示120个错误,然后再修复一些,下一个编译报告如400再次.我可以看到错误列表窗口中出现了不同的文件,所以我认为编译器会在一定数量的错误之后中止? 如果是这样,这是什么原因?即使它们超过10K,它不应该收集项目中存在的所有错误? 我一直在写一篇博客文章. 您可能只是针对报告的错误数量进行了一些硬编码的限制 当我编译这个项目时,它在错误列表窗口中显示为400个错误,然后我去错误的站点,修复一些,数字表示120个错误,然后再修复一些,下一个编译报告如400再次.我可以看到错误列表窗口中出现了不同的文件,所以我认为编译器会在一定数量的错误之后中止?

如果是这样,这是什么原因?即使它们超过10K,它不应该收集项目中存在的所有错误?

解决方法 我一直在写一篇博客文章.

您可能只是针对报告的错误数量进行了一些硬编码的限制.您也可能会遇到一个更微妙和有趣的情况.

在命令行编译器和IDE编译器中尝试管理错误报告有很多启发式.两者都可以保持对用户的管理,并使编译器更加健壮.

简单来说,编译器的工作方式是尝试通过一系列的阶段获得程序,您可以在这里阅读:

http://blogs.msdn.com/b/ericlippert/archive/2010/02/04/how-many-passes.aspx

这个想法是,如果早期阶段出现错误,我们可能无法在没有(1)进入无限循环,(2)崩溃或(3)报告疯狂的“级联”错误的情况下成功完成后期阶段.那么会发生什么,你得到一个错误,你修复它,然后突然下一个编译阶段可以运行,它发现一堆更多的错误.

基本上,如果程序如此混乱,甚至无法验证有关其类和方法的基本事实,那么方法体不能可靠地给出错误.如果我们无法分析一个lambda体,那么我们无法将其转换成表达式树可靠地给出错误.等等;有很多情况下,后期阶段需要知道以前的阶段完成没有错误.

这个设计的最重要的一点是(1)首先得到最“根本”的错误,没有很多嘈杂,疯狂的级联错误,(2)编译器更强大,因为它不必尝试对语言的基本不变量被破坏的程序进行分析.当然,你的场景是不利的,你有五十个错误,你们全部修复,突然有五十个出现.

总结

以上是内存溢出为你收集整理的C#编译器在每次编译时都不会一次报告所有错误?全部内容,希望文章能够帮你解决C#编译器在每次编译时都不会一次报告所有错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存