禁用和启用检查
有些检查可能会报告您当前不希望看到的问题。 在这种情况下,您可以禁用或抑制它们。
禁用检查
当您 禁用检查时,您将其关闭。 这意味着代码分析引擎将停止在项目文件中搜索此检查旨在检测的问题。 请注意,当您禁用某个检查时,您是在当前检查配置文件中禁用它;它在其他配置文件中仍然是启用的。
在 GoLand 中,大多数检查都可以禁用。 但是,一些检查将会不管设置如何继续高亮显示您的代码。 例如,语法错误始终会被高亮显示。
在设置中禁用检查
按下 Ctrl+Alt+S 以打开设置,然后选择 。
找到您想要禁用的检查,并清除其旁边的复选框。
应用更改并关闭对话框。
您可以使用上下文操作直接在编辑器中快速禁用触发的检查。
从编辑器禁用检查
将光标放在高亮行上,按 Alt+Enter (或点击
)以调用可用上下文操作列表。
点击您想要禁用的检查旁边的
,然后选择 禁用检查。
从问题工具窗口禁用检查
在 检查结果 选项卡的 问题 工具窗口中(在您运行代码分析后显示),右键点击您想要禁用的检查并选择 禁用检查。
点击工具栏上的
,然后选择 筛选已解决的项目 以隐藏已禁用检查的警告。
禁止检查
当您 抑制检查时,代码分析引擎不会在特定代码片段(类型、函数或行)中高亮显示该检查发现的问题。 您还可以抑制当前类型中的所有检查。
在 GoLand 中,大多数检查可以被抑制。 然而,有些检查没有此选项。 例如,语法错误始终会在编辑器中高亮显示,无论设置如何。
禁止从编辑器中检查
将文本光标放置在高亮行并按 Alt+Enter (或点击
使用意图操作)。
点击您想要抑制的检查旁边的
按钮,并根据所需范围选择一个操作。 GoLand 会在抑制检查的代码片段上方添加一个
// noinspection注释。您可以在 抑制注释表中找到检查及其标识符的列表。 例如,要抑制 导出元素的注释以不正确的名称开头 检查,请使用带有
// noinspection注释的GoCommentStartInspection标识符。 完整注释为// noinspection GoCommentStartInspection。
从问题工具窗口抑制检查
检查结果 选项卡的 问题 工具窗口显示运行代码分析时检测到的问题。
在 检查结果 选项卡中的 问题 工具窗口(运行代码分析后出现),右键点击您要抑制的检查并选择所需的抑制操作。

启用已屏蔽的检查
当您抑制检查时,IDE 会在选定符号之前添加一个 //noinspection 注解。 例如,如果您为语句抑制检查,GoLand 会在该语句之前添加注解。
要重新启用已抑制的检查,请删除
//noinspection注解。
禁用突出显示,但保留修复
检查具有 严重性 ,根据这些严重性,它们在编辑器中突出显示代码问题。 您可以在不打开设置的情况下快速禁用检查的代码高亮显示。 在这种情况下,检查保持启用并提供修复,但严重性会更改为 无高亮显示(修复可用)。
将文本光标放置在编辑器中由检查突出显示的代码元素处,然后按 Alt+Enter。
会打开一个可用修复和上下文操作的列表。 找到标记为
的检查修复。点击修复旁边的
按钮以打开检查选项并选择 禁用高亮显示,保留修正。

检查选项上方写有您正在更改严重性的检查名称。
如果您想恢复高亮,请按 Ctrl+Alt+S 打开 IDE 设置并选择 。 在列表中找到所需的检查并根据需要更改其严重性。 如需更多信息,请参阅 更改所有范围内的检查严重性。
更改文件的高亮级别
默认情况下,GoLand 会突出显示所有检测到的代码问题。 将鼠标悬停在编辑器右上角的小部件上,然后从 高亮显示 列表中选择另一级别:
无 :关闭高亮显示。
语法 :仅突出语法问题。
所有问题 :(默认)突出显示语法问题和检查发现的问题。
您还可以从主菜单中更改突出显示级别。 选择或按 Ctrl+Alt+Shift+H。
抑制注释
检查的名称 | 与 noinspection 关键字一起使用的 ID |
|---|---|
未使用的常量 | GoUnusedConstInspection |
未使用的全局变量 | GoUnusedGlobalVariableInspection |
未使用的导出函数 | GoUnusedExportedFunctionInspection |
未使用的函数 | GoUnusedFunctionInspection |
未使用的参数 | GoUnusedParameterInspection |
未使用的类型参数 | GoUnusedTypeParameterInspection |
未使用的类型 | GoUnusedTypeInspection |
未使用的导出类型 | GoUnusedExportedTypeInspection |
禁用的 GOPATH 索引 | GoDisabledGopathIndexingInspection |
布尔条件 | GoBoolExpressionsInspection |
自我赋值 | GoSelfAssignmentInspection |
空声明 | GoEmptyDeclarationInspection |
切片中多余的第二个索引 | GoRedundantSecondIndexInSlicesInspection |
范围中多余的空参数 | GoRedundantBlankArgInRangeInspection |
复合字面量中存在冗余类型 | GoRedundantTypeDeclInCompositeLit |
多余的分号 | GoRedundantSemicolonInspection |
多余的逗号 | GoRedundantCommaInspection |
多余的类型转换 | GoRedundantConversionInspection |
多余的导入别名 | GoRedundantImportAliasInspection |
类型可以省略 | GoVarAndConstTypeMayBeOmittedInspection |
使用字面量声明的空切片 | GoPreferNilSliceInspection |
导出元素的注释以错误的名称开头 | GoCommentStartInspection |
导出元素应有其自己的声明 | GoExportedOwnDeclarationInspection |
结构体初始化没有字段名称 | GoStructInitializationWithoutFieldNamesInspection |
接收器具有通用名称 | GoReceiverNamesInspection |
名称以包名开头 | GoNameStartsWithPackageNameInspection |
未排序的 import | GoUnsortedImportInspection |
错误字符串不应以大写字母开头或以标点符号结尾 | GoErrorStringFormatInspection |
注释没有前导空格 | GoCommentLeadingSpaceInspection |
使用 Snake_Case | GoSnakeCaseUsageInspection |
导出元素应有注释 | GoExportedElementShouldHaveCommentInspection |
特定于单位的 'time.Duration' 后缀 | GoUnitSpecificDurationSuffixInspection |
类型形参以小写声明 | GoTypeParameterInLowerCaseInspection |
for 循环条件中存在冗余的 'true' | GoRedundantTrueInForConditionInspection |
保留字用作名称 | GoReservedWordUsedAsNameInspection |
函数字面量捕获的循环变量 | GoLoopClosureInspection |
导入的包名用作名称标识符 | GoImportUsedAsNameInspection |
格式错误的结构体标记 | GoVetStructTagInspection |
不可能的接口类型断言 | GoVetImpossibleInterfaceToInterfaceAssertionInspection |
错误使用 'fmt.Printf' 和 'fmt.Println' 函数 | GoPrintFunctionsInspection |
变量遮蔽 | GoShadowedVarInspection |
除以零 | GoDivisionByZeroInspection |
'strings.Replace' 的计数参数错误 | GoStringsReplaceCountInspection |
格式错误的构建标签 | GoBuildTagInspection |
错误使用 'sync/atomic' 包 | GoVetAtomicInspection |
锁被错误地按值传递 | GoVetCopyLockInspection |
'uintptr' 到 'unsafe.Pointer' 的无效转换 | GoVetUnsafePointerInspection |
错误使用 'errors.As' 函数 | GoErrorsAsInspection |
未使用的函数或方法调用结果 | GoUnusedCallResultInspection |
未处理的错误 | GoUnhandledErrorResultInspection |
空值分析器 | GoNilnessInspection |
Defer/go 语句直接调用 'recover' 或 'panic' | GoDeferGoInspection |
知名函数名称的非标准签名 | GoStandardMethodsInspection |
超出范围的移位表达式 | GoShiftInspection |
'Unmarshal' 被调用时参数错误 | GoVetUnmarshalInspection |
整数到字符串的类型转换 | GoVetIntToStringConversionInspection |
'context.CancelFunc' 未被调用 | GoVetLostCancelInspection |
'FailNow' 在非测试的 goroutine 中 | GoVetFailNowInNotTestGoroutineInspection |
混合值和指针接收器 | GoMixedReceiverTypesInspection |
不规则使用 'iota' | GoIrregularIotaInspection |
直接比较错误 | GoDirectComparisonOfErrorsInspection |
错误的类型断言在包装的错误上失败 | GoTypeAssertionOnErrorsInspection |
'switch' 中缺少 'iota' 常量的 'case' 语句 | GoSwitchMissingCasesForIotaConstsInspection |
无限 'for' 循环 | GoInfiniteForInspection |
循环中的 'defer' | GoDeferInLoopInspection |
赋值给接收器 | GoAssignmentToReceiverInspection |
不可到达的代码 | GoUnreachableCodeInspection |
弃用的元素 | GoDeprecationInspection |
多余的括号 | GoRedundantParensInspection |
导出函数的未导出返回类型 | GoExportedFuncWithUnexportedTypeInspection |
不必要导出的标识符 | GoUnnecessarilyExportedIdentifiersInspection |
格式错误的测试函数名称 | GoTestNameInspection |
使用 context.TODO() | GoContextTodoInspection |
将 'interface{}' 用作类型 | GoInterfaceToAnyInspection |
模糊测试从 Go 1.18 开始支持 | GoFuzzingSupportInspection |
转换字符串字面量 | GoConvertStringLiteralsInspection |
指令注释中的前导空格 | GoLeadingWhitespaceInDirectiveCommentInspection |
复合字面量中的换行符前缺少尾随逗号 | GoMissingTrailingCommaInspection |