如何抑制某些文件的Intellisense错误?

时间:2015-09-21 13:56:17

标签: visual-studio-2015 intellisense

Visual Studio 2015提供了在同一窗口中显示Intellisense错误的选项,该窗口还显示常规构建错误。我喜欢它,因为我甚至不需要构建以查看我的代码是否在症状上是正确的。

但是,该窗口还显示一个误报错误,似乎与Intellisense错误有关。有没有办法抑制特定代码区域或整个文件的intellisense错误?

3 个答案:

答案 0 :(得分:2)

你找到了答案吗?您可以通过在引发错误之前的代码中编写以下代码来完成此操作

#pragma warning disable XXXX

其中XXXX是没有" CS"

的错误代码

或者您可以尝试这些步骤来禁止对Visual C#或F#

的特定警告
  1. 在“解决方案资源管理器”中,选择要在其中禁止显示警告的项目。
  2. 在菜单栏上,选择“视图”,“属性页”。
  3. 选择“构建”页面。
  4. 在“抑制警告”框中,指定要抑制的警告的错误代码,以分号分隔,然后重建解决方案。
  5. 取自https://msdn.microsoft.com/en-us/library/jj715718.aspx

    请注意,会提到警告而不是错误,但对我来说,如果我选择在“错误列表”窗口中显示“已抑制的错误”,则会将其列为错误。您可能需要在“错误列表”窗口中启用此列。

答案 1 :(得分:1)

我知道有个老问题,但是我对Visual Studio 2019 / IntelliSense也有类似的抱怨,并找到了解决方案。

我的特定示例是C ++,涉及可变长度数组的使用。 Clang支持/编译它们,我可以通过添加-Wno-vla选项(Properties -> C/C++ -> Command Line -> Additional Options)来抑制构建警告。
但是,IntelliSense忽略将VLA视为错误而非警告的“ -Wno-vla”。因此,代码及其错误列表中出现了红色花样: E0028 expression must have a constant value
(此错误号28在下面很重要)

关键是要记住IntelliSense使用不同的编译器前端,因此对于“正确”的东西可能与所选的编译器和选项有不同的想法。前端是从EDG获得许可的,幸运的是,它们在此处记录了一些操作,包括命令行选项,编译指示等:C++ Front End PDF

我不知道如何将他们的命令行选项专门定向到他们的前端,这似乎是从项目中提取其选项,与构建编译器使用的选项相同……它使这些选项感到窒息,尤其是那些期望在空格后输入参数的参数(例如--diag_suppress 28无效)。

可以开始工作的是前端特定的实用程序!这样就需要少量的非便携式代码。具体来说,我将以下内容放入我的顶级(“所有人都包括在内”)头文件之一中,并且效果很好:

#ifdef __INTELLISENSE__
  #pragma diag_suppress 28
#endif

没有__INTELLISENSE__子句,您也可以这样做:#pragma clang diagnostic ignored "-Wunknown-pragmas"

答案 2 :(得分:0)

使用StyleCop时,您可以执行以下操作:

[SuppressMessage(“规则类别”,“规则ID”,“理由”)]

示例:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", 
            "SA1300:ElementMustBeginWithUpperCaseLetter", 
            Justification = "This field is intentionally lowercase")]