Golang中如何在VSCode忽略文件

Golang中如何在VSCode忽略文件 在我的项目中运行 vscode-go 时,我收到了一些误报的“问题”,因为 vscode-go 正在处理不属于实际代码的 .go 文件: -nD4

如何让 vscode-go 忽略这些文件?


更多关于Golang中如何在VSCode忽略文件的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

重命名它们。

更多关于Golang中如何在VSCode忽略文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


谢谢!目前这个方法可行。

理想情况下,我希望能够在不修改 Go 文件本身的情况下忽略它们。

你可以尝试使用这个://go:build ignore

我认为你无法配置这个。为什么你的项目目录中存在实际上不属于项目的 .go 文件?你能把它们放到其他地方吗?

为什么你的项目目录中有实际上不属于项目的 .go 文件?

因为我嵌入了它们。

你能把它们放在其他地方吗?

不能,因为 Go 只支持嵌入位于文件树中嵌入包之下的文件。

在VSCode中让Go扩展忽略特定文件,可以通过配置.vscode/settings.json文件实现。以下是具体方法:

1. 创建或编辑工作区设置

在项目根目录的.vscode文件夹中创建或编辑settings.json文件:

{
    "go.lintFlags": [
        "--exclude-dirs=vendor",
        "--exclude-dirs=testdata"
    ],
    "go.buildFlags": [
        "-tags=integration"
    ],
    "files.exclude": {
        "**/*.pb.go": true,
        "**/vendor/**": true,
        "**/testdata/**": true
    }
}

2. 针对你的具体需求

根据你的截图,看起来是protobuf生成的.pb.go文件被分析。可以这样配置:

{
    "go.lintFlags": [
        "--exclude-dirs=generated",
        "--exclude-dirs=protobuf"
    ],
    "go.analysis.exclude": [
        "**/*.pb.go",
        "**/generated/**",
        "**/third_party/**"
    ],
    "go.toolsManagement.autoUpdate": true
}

3. 使用go.analysis.exclude模式

更精确地排除特定文件模式:

{
    "go.analysis.exclude": [
        "**/*_test.go",
        "**/*.pb.go",
        "**/*.pb.gw.go",
        "**/mocks/**",
        "**/vendor/**",
        "**/tmp/**"
    ],
    "go.languageServerFlags": [
        "-analysis.exclude",
        "**/generated/**"
    ]
}

4. 针对你的项目结构

根据你的GitHub项目结构,可以这样配置:

{
    "go.analysis.exclude": [
        "**/protobuf/**",
        "**/*.pb.go",
        "**/third_party/**",
        "**/vendor/**"
    ],
    "go.lintFlags": [
        "--exclude-dirs=protobuf",
        "--exclude-dirs=third_party"
    ],
    "[go]": {
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        }
    }
}

5. 使用gopls配置

如果使用gopls作为语言服务器,可以在gopls设置中配置:

{
    "gopls": {
        "build.excludePatterns": [
            "**/protobuf/**",
            "**/*.pb.go",
            "**/testdata/**"
        ],
        "ui.diagnostic.exclude": {
            "generated": true
        }
    },
    "go.useLanguageServer": true
}

6. 完整示例配置

结合你的项目需求,完整的.vscode/settings.json可以是:

{
    "go.analysis.exclude": [
        "**/protobuf/**",
        "**/*.pb.go",
        "**/third_party/**",
        "**/vendor/**",
        "**/tmp/**",
        "**/testdata/**"
    ],
    "go.lintFlags": [
        "--exclude-dirs=protobuf",
        "--exclude-dirs=third_party",
        "--exclude-dirs=vendor"
    ],
    "files.exclude": {
        "**/*.pb.go": true,
        "**/protobuf/**": true,
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true
    },
    "search.exclude": {
        "**/vendor": true,
        "**/*.pb.go": true
    }
}

配置完成后,重启VSCode或重新加载窗口(Ctrl+Shift+P,输入"Reload Window")使设置生效。这些配置会告诉Go扩展和gopls忽略指定的文件和目录,从而消除误报问题。

回到顶部