如何在VSCode中为单个文件覆盖单项linter设置?
问题整理
- VSCode的工作区linter配置默认存放在
.vscode/settings.json(注意后缀是json不是js)里。 - 具体需求:给单个Dart文件单独覆盖配置,把全局设置的
"dart.lineLength": 80改成100,想要实现类似ESLint支持的、直接在文件顶部写注释声明配置的效果,期望写法参考:
// 目标文件 my-exclusive-file.dart /*settings "dart.lineLength": 100*/
- 先纠正一个错误认知:
files.exclude配置的作用是在VSCode侧边栏资源管理器里隐藏指定文件,根本不会影响lint规则运行,也没法用来禁用lint。
具体答复
VSCode本身没有做跨语言通用的「文件内注释覆盖全局/工作区设置」的能力,你提到的ESLint那种注释写配置的用法,是ESLint自己实现的特性,和VSCode没关系。能不能这么用,完全看对应语言的插件、配套的linter/格式化工具本身支不支持。
针对你要改Dart单文件行长的场景,情况是这样的:
- 官方Dart/Flutter插件目前不支持你想要的那种顶部注释改
lineLength的写法。dart.lineLength是直接传给Dart分析器和dart format格式化工具的全局参数,官方没开单文件通过注释覆盖这个参数的入口。 - 目前能用的替代方案有几个:
- 临时用的话,打开目标Dart文件后,点VSCode底部状态栏的行长显示区域,可以临时给当前打开的文件改格式化用的行长,不过这个改动不会存下来,关掉文件重开就会变回全局配置。
- 如果只是不想让linter报特定文件的行长超标错误,可以在项目根目录的
analysis_options.yaml里给指定路径关规则,示例配置:
linter: rules: # 全局默认开启80行长检查 lines_longer_than_80_chars: true analyzer: errors: # 给指定文件关掉行长检查 lines_longer_than_80_chars: ignored: [lib/my-exclusive-file.dart]
- 如果只是个别几行需要写超长内容,没必要改整个文件的配置,直接在对应行上面加注释跳过检查就行:
// ignore: lines_longer_than_80_chars final superLongVariableNameThatNoOneCanStop = 'this line is way longer than 80 chars but no lint error will pop up'; - 额外说明:现在
dart format的行长参数是全局生效的,暂时没有持久化的单文件自定义行长方案,如果要给特定文件按100行长做格式化,要么临时改全局配置用完改回去,要么手动跑格式化命令的时候单独传行长参数。
内容的提问来源于stack exchange,提问作者cheiser
相关产品推荐
相关产品推荐

