繁体   English   中英

我的visual studio插件如何在构建之前检测编译器错误的方式与“删除和排序使用”相同?

[英]How can my visual studio addin detect compiler errors before building in the same manner as “Remove and Sort Usings”?

我正在制作一个重构工具,它可以自动化一些与StyleCop相关的更简单的代码样式。 我希望我的加载项能够做的事情之一(作为开发人员可以打开/关闭的可选功能)自动调用“组织使用 - >删除和排序”功能。 这是一个简单的宏调用。

但是,我的问题是,当我经历并在解决方案中的每个.cs非设计器文件上递归调用宏时,此特定宏在执行之前检查错误。 如果出现语法错误并且我的加载项开始调用该功能,则会为每个文件抛出一个对话框。

我想做的是使用函数用于动态检查错误的相同方法,然后如果出现导致对话框弹出的错误,只需弹出一次性通知并跳过调用在每个文件上。

我知道我的加载项可以检查错误列表,但是我发现很多次在“删除和排序”中触发问题的错误并不总是出现在列表中。 我已将列表清空,然后我尝试“删除并排序”,它告诉我存在构建问题。 然后我构建解决方案,确定它失败并填充错误。 我看到的唯一解决方案是使用与“删除和排序”相同的功能来预先检查。

有没有人知道如何在构建之前检测编译器错误,方法与“删除和排序使用”相同?

我不确定你在谈论什么样的错误,我会假设它们是IntelliSense解析器生成的错误。 是的,该解析器不是很可靠。 它并不是一个完整的C#解析器,它被优化为完成一个非常不同的工作:提供上下文相关的帮助,即使代码不完整且无法编译。 除了等待下一个VS版本之外,没有任何其他方法可以让它更可靠。

但令我感到震惊的是,你可能正试图解决错误的问题。 关键问题是您的加载项似乎正在删除使用不应删除的指令。 真正的解决方法是改进您的代码分析引擎,以便可靠地检测真正的命名空间依赖关系。 试图猜测哪些是重要的,希望IntelliSense会抱怨只会让您的客户感到沮丧。

这看起来很糟糕,但除非有人能提出更好的解决方案,否则我会使用错误列表检查,因为它总比没有好。

另外我想我可以尝试在“Edit.RemoveAndSort”的调用周围放置一个计时器,如果它需要一段时间,则弹出一次性对话框,提到看起来像RemoveAndSort有问题并询问是否用户想要取消,或者至少不要调用删除和排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM