【问题标题】:Specify linters in lintr::lint在 lintr::lint 中指定 linters
【发布时间】:2017-03-20 20:52:00
【问题描述】:

我不知道如何使用 lintr 关闭特定的 linter。该文档提供了一个示例(对于我正在使用的 vim/syntastic),这不是很清楚:

let g:syntastic_r_lintr_linters = "with_defaults(line_length_linter(120))"

显然,这只是更改默认值。我需要在这里列出我想使用的所有 linter 吗?有没有办法只排除一对?

我认为有类似的东西

let g:syntastic_r_lintr_linters_nonportable_path_linter = 0

但我找不到正确的语法。

显然g:syntastic_r_lintr_linters 应该是一个短绒列表。但不清楚应该使用什么语法。

如果我们忘记 vim 语法并直接转到 R 包 lintr(vim/syntastic 调用)和 lintlinters 参数,那么这可行:

lint(file.R, linters=assignment_linter)

这不会(没有错误,但不会捕获代码中的错误):

lint(file.R, linters=list(assignment_linter, single_quotes_linter))

这也不是(错误输出):

lint(file.R, linters=list('assignment_linter', 'single_quotes_linter'))

但这确实:

lint('file.R',linters=list('assignment_linter'=assignment_linter,'single_quotes_linter'=single_quotes_linter))

所以也许它应该是一个命名列表?

【问题讨论】:

  • g:syntastic_r_lintr_linters 应该是一个 R 的 linter 列表,with_defaults() 只是构建这个列表的一种便捷方式。这或多或少是documented
  • 是的,我已经读过,但是 linter 列表不起作用。请参阅上面的编辑

标签: r lintr


【解决方案1】:

关闭特定 linter 的正确语法是将这个(例如)添加到 vimrc:

let g:syntastic_r_lintr_linters = "with_defaults(single_quotes_linter=NULL)"

这不在文档中。我不得不在 github 上挖掘一些旧的(已关闭的)问题才能找到它。

此外,lintr::lint 确实期望linters 参数有一个命名列表,但现在将接受一个未命名列表(请参阅https://github.com/jimhester/lintr/issues/224)。所以这应该可以从头开始制作列表:

let g:syntastic_r_lintr_linters = "list(assignment_linter, single_quotes_linter")

【讨论】:

  • 或者,您可以采用默认 linter 列表的命名子集,如下所示:let g:syntastic_r_lintr_linters = "default_linters[c('assignment_linter', 'single_quotes_linter')]"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2019-08-19
相关资源
最近更新 更多