lintr3.2.0 package

A 'Linter' for R Code

any_duplicated_linter

Require usage of anyDuplicated(x) > 0 over any(duplicated(x))

any_is_na_linter

Require usage of anyNA(x) over any(is.na(x))

assignment_linter

Assignment linter

class_equals_linter

Block comparison of class with ==

clear_cache

Clear the lintr cache

commas_linter

Commas linter

commented_code_linter

Commented code linter

common_mistakes_linters

Common mistake linters

comparison_negation_linter

Block usages like !(x == y) where a direct relational operator is appr...

consecutive_assertion_linter

Force consecutive calls to assertions into just one when possible

expect_not_linter

Require usage of expect_false(x) over expect_true(!x)

expect_null_linter

Require usage of expect_null for checking NULL

expect_s3_class_linter

Require usage of expect_s3_class()

expect_s4_class_linter

Require usage of expect_s4_class(x, k) over expect_true(is(x, k))

expect_true_false_linter

Require usage of expect_true(x) over expect_equal(x, TRUE)

expect_type_linter

Require usage of expect_type(x, type) over `expect_equal(typeof(x), ...

fixed_regex_linter

Require usage of fixed=TRUE in regular expressions where appropriate

for_loop_index_linter

Block usage of for loops directly overwriting the indexing variable

implicit_integer_linter

Implicit integer linter

indentation_linter

Check that indentation is consistent

object_length_linter

Object length linter

pipe_continuation_linter

Pipe continuation linter

pipe_return_linter

Block usage of return() in magrittr pipelines

pkg_testthat_linters

Testthat linters

sample_int_linter

Require usage of sample.int(n, m, ...) over sample(1:n, m, ...)

sarif_output

SARIF Report for lint results

scalar_in_linter

Block usage like x %in% "a"

stopifnot_all_linter

Block usage of all() within stopifnot()

terminal_close_linter

Prohibit close() from terminating a function definition

tidy_design_linters

Tidyverse design linters

todo_comment_linter

TODO comment linter

trailing_blank_lines_linter

Trailing blank lines linter

trailing_whitespace_linter

Trailing whitespace linter

xml_nodes_to_lints

Convert an XML node or nodeset into a Lint

infix_spaces_linter

Infix spaces linter

lengths_linter

Require usage of lengths() where possible

library_call_linter

Library call linter

line_length_linter

Line length linter

lint-s3

Create a lint object

lint

Lint a file, directory, or package

Linter

Create a linter closure

linters_with_defaults

Create a linter configuration based on defaults

matrix_apply_linter

Require usage of colSums(x) or rowSums(x) over apply(x, ., sum)

missing_argument_linter

Missing argument linter

missing_package_linter

Missing package linter

normalize_exclusions

Normalize lint exclusions

nrow_subset_linter

Block usage of nrow(subset(x, .))

numeric_leading_zero_linter

Require usage of a leading zero in all fractional numerics

nzchar_linter

Require usage of nzchar where appropriate

which_grepl_linter

Require usage of grep over which(grepl(.))

whitespace_linter

Whitespace linter

default_undesirable_functions

Default undesirable functions and operators

absolute_path_linter

Absolute path linter

all_linters

Create a linter configuration based on all available linters

deprecated_linters

Deprecated linters

available_linters

Get Linter metadata from a package

backport_linter

Backport linter

best_practices_linters

Best practices linters

boolean_arithmetic_linter

Require usage of boolean operators over equivalent arithmetic

brace_linter

Brace linter

checkstyle_output

Checkstyle Report for lint results

condition_call_linter

Recommend usage of call. = FALSE in conditions

condition_message_linter

Block usage of paste() and paste0() with messaging functions using...

configurable_linters

Configurable linters

conjunct_test_linter

Force && conditions to be written separately where appropriate

package_development_linters

Package development linters

consecutive_mutate_linter

Require consecutive calls to mutate() to be combined when possible

consistency_linters

Consistency linters

correctness_linters

Correctness linters

cyclocomp_linter

Cyclomatic complexity linter

default_linters

Default linters

default_settings

Default lintr settings

duplicate_argument_linter

Duplicate argument linter

efficiency_linters

Efficiency linters

empty_assignment_linter

Block assignment of {}

equals_na_linter

Equality check with NA linter

exclude

Exclude lines or files from linting

executing_linters

Code executing linters

expect_comparison_linter

Require usage of expect_gt(x, y) over expect_true(x > y) (and simi...

expect_identical_linter

Require usage of expect_identical(x, y) where appropriate

expect_length_linter

Require usage of expect_length(x, n) over `expect_equal(length(x), n...

expect_lint_free

Test that the package is lint free

expect_lint

Lint expectation

expect_named_linter

Require usage of expect_named(x, n) over expect_equal(names(x), n)

function_argument_linter

Function argument linter

function_left_parentheses_linter

Function left parentheses linter

function_return_linter

Lint common mistakes/style issues cropping up from return statements

get_r_string

Extract text from STR_CONST nodes

get_source_expressions

Parsed sourced file from a filename

ids_with_token

Get parsed IDs by token

if_not_else_linter

Block statements like if (!A) x else y

if_switch_linter

Require usage of switch() over repeated if/else blocks

ifelse_censor_linter

Block usage of ifelse() where pmin() or pmax() is more appropria...

implicit_assignment_linter

Avoid implicit assignment in function calls

inner_combine_linter

Require c() to be applied before relatively expensive vectorized fun...

is_lint_level

Is this an expression- or a file-level source object?

is_numeric_linter

Redirect is.numeric(x) || is.integer(x) to just use is.numeric(x)

keyword_quote_linter

Block unnecessary quoting in calls

length_levels_linter

Require usage of nlevels over length(levels(.))

length_test_linter

Check for a common mistake where length is applied in the wrong place

linters_with_tags

Create a tag-based linter configuration

linters

Available linters

lintr-deprecated

Deprecated functions in lintr

lintr-package

Lintr

list_comparison_linter

Block usage of comparison operators with known-list() functions like l...

literal_coercion_linter

Require usage of correctly-typed literals over literal coercions

make_linter_from_xpath

Create a linter from an XPath

modify_defaults

Modify lintr defaults

namespace_linter

Namespace linter

nested_ifelse_linter

Block usage of nested ifelse() calls

nested_pipe_linter

Block usage of pipes nested inside other calls

nonportable_path_linter

Non-portable path linter

object_name_linter

Object name linter

object_overwrite_linter

Block assigning any variables whose name clashes with a base R funct...

object_usage_linter

Object usage linter

one_call_pipe_linter

Block single-call magrittr pipes

outer_negation_linter

Require usage of !any(x) over all(!x), !all(x) over any(!x)

package_hooks_linter

Package hooks linter

paren_body_linter

Parenthesis before body linter

parse_exclusions

read a source file and parse all the excluded lines from it

paste_linter

Raise lints for several common poor usages of paste()

pipe_call_linter

Pipe call linter

pipe_consistency_linter

Pipe consistency linter

routine_registration_linter

Identify unregistered native routines

print_linter

Block usage of print() for logging

quotes_linter

Character string quote linter

read_settings

Read lintr settings

readability_linters

Readability linters

redundant_equals_linter

Block usage of ==, != on logical vectors

redundant_ifelse_linter

Prevent ifelse() from being used to produce TRUE/FALSE or 1/`0...

regex_linters

Regular expression linters

regex_subset_linter

Require usage of direct methods for subsetting strings via regex

rep_len_linter

Require usage of rep_len(x, n) over rep(x, length.out = n)

repeat_linter

Repeat linter

return_linter

Return linter

robustness_linters

Robustness linters

semicolon_linter

Semicolon linter

seq_linter

Sequence linter

sort_linter

Check for common mistakes around sorting vectors

spaces_inside_linter

Spaces inside linter

spaces_left_parentheses_linter

Spaces before parentheses linter

sprintf_linter

Require correct sprintf() calls

string_boundary_linter

Require usage of startsWith() and endsWith() over grepl()/`subst...

strings_as_factors_linter

Identify cases where stringsAsFactors should be supplied explicitly

style_linters

Style linters

system_file_linter

Block usage of file.path() with system.file()

T_and_F_symbol_linter

T and F symbol linter

undesirable_function_linter

Undesirable function linter

undesirable_operator_linter

Undesirable operator linter

unnecessary_concatenation_linter

Unneeded concatenation linter

unnecessary_lambda_linter

Block usage of anonymous functions in iteration functions when unneces...

vector_logic_linter

Enforce usage of scalar logical operators in conditional statements

unnecessary_nesting_linter

Block instances of unnecessary nesting

unnecessary_placeholder_linter

Block usage of pipeline placeholders if unnecessary

unreachable_code_linter

Block unreachable code and comments following return statements

unused_import_linter

Check that imported packages are actually used

use_lintr

Use lintr in your project

xp_call_name

Get the name of the function matched by an XPath

yoda_test_linter

Block obvious "yoda tests"

Checks adherence to a given style, syntax errors and possible semantic issues. Supports on the fly checking of R code edited with 'RStudio IDE', 'Emacs', 'Vim', 'Sublime Text', 'Atom' and 'Visual Studio Code'.

  • Maintainer: Michael Chirico
  • License: MIT + file LICENSE
  • Last published: 2025-02-12