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

如何让 vscode-go 忽略这些文件?
更多关于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忽略指定的文件和目录,从而消除误报问题。

