Report the use of undesirable operators, e.g. :::
or
<<-
and suggest an alternative.
Arguments
- op
Named character vector.
names(op)
correspond to undesirable operators, while the values give a description of why the operator is undesirable. IfNA
, no additional information is given in the lint message. Defaults to default_undesirable_operators. To make small customizations to this list, usemodify_defaults()
.
See also
linters for a complete list of linters available in lintr.
Examples
# defaults for which functions are considered undesirable
names(default_undesirable_operators)
#> [1] "->>" ":::" "<<-"
# will produce lints
lint(
text = "a <<- log(10)",
linters = undesirable_operator_linter()
)
#> <text>:1:3: warning: [undesirable_operator_linter] Avoid undesirable operator `<<-`. It assigns outside the current environment in a way that can be hard to reason about. Prefer fully-encapsulated functions wherever possible, or, if necessary, assign to a specific environment with assign(). Recall that you can create an environment at the desired scope with new.env().
#> a <<- log(10)
#> ^~~
lint(
text = "mtcars$wt",
linters = undesirable_operator_linter(op = c("$" = "As an alternative, use the `[[` accessor."))
)
#> <text>:1:7: warning: [undesirable_operator_linter] Avoid undesirable operator `$`. As an alternative, use the `[[` accessor.
#> mtcars$wt
#> ^
# okay
lint(
text = "a <- log(10)",
linters = undesirable_operator_linter()
)
#> ℹ No lints found.
lint(
text = 'mtcars[["wt"]]',
linters = undesirable_operator_linter(op = c("$" = NA))
)
#> ℹ No lints found.
lint(
text = 'mtcars[["wt"]]',
linters = undesirable_operator_linter(op = c("$" = "As an alternative, use the `[[` accessor."))
)
#> ℹ No lints found.