我相信这是我的一个误解,因为我不是一个真正的R程序员。
我的代码在这里:https://gist.github.com/bnsh/3839c4eb2c6b31e32c39ec312014b2b8
#! /usr/bin/env Rscript
library(R6)
Cloaked <- R6::R6Class("Cloaked",
public = list(
msg = function() {
return(paste(
"this code _works_, but lintr (https://github.com/jimhester/lintr)",
"complains that cloak_class.R:19:8: warning: no visible binding for",
"global variable ‘Cloaked’ when I try to use Cloaked within a",
"function. It's fine tho, if I use it _outside_ a function."
))
}
)
)
main <- function() {
c <- Cloaked$new()
c$msg()
}
main()
字符串
它工作...但是,lintr抱怨:“cloak_class.R:19:8:警告:全局变量'Cloaked'没有可见的绑定“
实际上,这不是关于一个类,真的,因为这也抱怨:
#! /usr/bin/env Rscript
cloaked <- function() {
return(paste(
"this code _works_, but lintr (https://github.com/jimhester/lintr)",
"complains that cloak_function.R:13:3: warning: no visible global",
"function definition for ‘cloaked’ when I try to use cloaked within",
"a function. It's fine tho, if I use it _outside_ a function."
))
}
main <- function() {
cloaked()
}
main()
型
这段代码也可以运行,但lintr说:cloak_function.R:13:3:警告:“cloaked”没有可见的全局函数定义
为什么?短做一些钝工具,如# nolint start
/# nolint end
,我能做些什么来满足lintr?
谢谢你,谢谢
2条答案
按热度按时间jucafojl1#
我刚开始使用lintr,遇到了同样的问题。这似乎是一个bug。
https://github.com/REditorSupport/atom-ide-r/issues/7和实际问题https://github.com/jimhester/lintr/issues/27
目前唯一的解决方法(除了修复lintr中的bug)是禁用对象linter(这并不理想,因为它不会捕获这种形式的真正错误)。例如。
字符串
(我不认为linter的对象用法是针对脚本的,而是针对包的--据我所知,要工作,它将评估整个脚本(!)查看定义了哪些全局变量。对于一个R文件都是函数定义的包来说,这很好,但是对于一个脚本来说,你并不想在每次lint文件时运行整个脚本。
c3frrgcw2#
在lintr函数中使用linters参数:
字符串
或者使用项目文件夹(工作目录)中的
.lintr
文件型