| Absolute path linter | absolute_path_linter |
| Warn about invalid usage of 'all.equal()' | all_equal_linter |
| Create a linter configuration based on all available linters | all_linters |
| Default undesirable functions and operators | all_undesirable_functions all_undesirable_operators default_undesirable_functions default_undesirable_operators |
| Require usage of 'anyDuplicated(x) > 0' over 'any(duplicated(x))' | any_duplicated_linter |
| Require usage of 'anyNA(x)' over 'any(is.na(x))' | any_is_na_linter |
| Assignment linter | assignment_linter |
| Get Linter metadata from a package | available_linters available_tags |
| Backport linter | backport_linter |
| Best practices linters | best_practices_linters |
| Require usage of boolean operators over equivalent arithmetic | boolean_arithmetic_linter |
| Brace linter | brace_linter |
| Checkstyle Report for lint results | checkstyle_output |
| Block comparison of class with '==' | class_equals_linter |
| Clear the lintr cache | clear_cache |
| Encourage usage of the null coalescing operator %||% | coalesce_linter |
| Commas linter | commas_linter |
| Commented code linter | commented_code_linter |
| Common mistake linters | common_mistakes_linters |
| Block usages like !(x == y) where a direct relational operator is appropriate | comparison_negation_linter |
| Recommend usage of 'call. = FALSE' in conditions | condition_call_linter |
| Block usage of 'paste()' and 'paste0()' with messaging functions using '...' | condition_message_linter |
| Configurable linters | configurable_linters |
| Force '&&' conditions to be written separately where appropriate | conjunct_test_linter |
| Force consecutive calls to assertions into just one when possible | consecutive_assertion_linter |
| Require consecutive calls to mutate() to be combined when possible | consecutive_mutate_linter |
| Consistency linters | consistency_linters |
| Correctness linters | correctness_linters |
| Cyclomatic complexity linter | cyclocomp_linter |
| Default linters | default_linters |
| Default lintr settings | .lintr config default_settings lintr-config lintr-settings settings |
| Deprecated linters | deprecated_linters |
| Recommend usage of a portable 'mode' value for downloading files | download_file_linter |
| Duplicate argument linter | duplicate_argument_linter |
| Efficiency linters | efficiency_linters |
| Block assignment of '{}' | empty_assignment_linter |
| Equality check with NA linter | equals_na_linter |
| Code executing linters | executing_linters |
| Require usage of 'expect_gt(x, y)' over 'expect_true(x > y)' (and similar) | expect_comparison_linter |
| Require usage of 'expect_identical(x, y)' where appropriate | expect_identical_linter |
| Require usage of 'expect_length(x, n)' over 'expect_equal(length(x), n)' | expect_length_linter |
| Lint expectation | expect_lint expect_no_lint |
| Test that the package is lint free | expect_lint_free |
| Require usage of 'expect_named(x, n)' over 'expect_equal(names(x), n)' | expect_named_linter |
| Require usage of 'expect_false(x)' over 'expect_true(!x)' | expect_not_linter |
| Require usage of 'expect_null' for checking 'NULL' | expect_null_linter |
| Require usage of 'expect_s3_class()' | expect_s3_class_linter |
| Require usage of 'expect_s4_class(x, k)' over 'expect_true(is(x, k))' | expect_s4_class_linter |
| Require usage of 'expect_true(x)' over 'expect_equal(x, TRUE)' | expect_true_false_linter |
| Require usage of 'expect_type(x, type)' over 'expect_equal(typeof(x), type)' | expect_type_linter |
| Require usage of 'fixed=TRUE' in regular expressions where appropriate | fixed_regex_linter |
| Block usage of for loops directly overwriting the indexing variable | for_loop_index_linter |
| Function argument linter | function_argument_linter |
| Function left parentheses linter | function_left_parentheses_linter |
| Lint common mistakes/style issues cropping up from return statements | function_return_linter |
| Extract text from 'STR_CONST' nodes | get_r_string |
| Parsed sourced file from a filename | get_source_expressions |
| GitLab Report for lint results | gitlab_output |
| Get parsed IDs by token | ids_with_token with_id |
| Block statements like if (!A) x else y | if_not_else_linter |
| Require usage of switch() over repeated if/else blocks | if_switch_linter |
| Block usage of 'ifelse()' where 'pmin()' or 'pmax()' is more appropriate | ifelse_censor_linter |
| Avoid implicit assignment in function calls | implicit_assignment_linter |
| Implicit integer linter | implicit_integer_linter |
| Check that indentation is consistent | indentation_linter |
| Infix spaces linter | infix_spaces_linter |
| Require 'c()' to be applied before relatively expensive vectorized functions | inner_combine_linter |
| Is this an expression- or a file-level source object? | is_lint_level |
| Redirect 'is.numeric(x) || is.integer(x)' to just use 'is.numeric(x)' | is_numeric_linter |
| Block unnecessary quoting in calls | keyword_quote_linter |
| Require usage of nlevels over length(levels(.)) | length_levels_linter |
| Check for a common mistake where a size check like 'length' is applied in the wrong place | length_test_linter |
| Require usage of 'lengths()' where possible | lengths_linter |
| Library call linter | library_call_linter |
| Line length linter | line_length_linter |
| Lint a file, directory, or package | lint lint_dir lint_package |
| Create a 'lint' object | Lint lint-s3 |
| Create a 'linter' closure | Linter |
| Available linters | linters |
| Create a linter configuration based on defaults | linters_with_defaults |
| Create a tag-based linter configuration | linters_with_tags |
| Block usage of comparison operators with known-list() functions like lapply | list_comparison_linter |
| Recommend direct usage of 'data.frame()' to create a data.frame from a list | list2df_linter |
| Require usage of correctly-typed literals over literal coercions | literal_coercion_linter |
| Create a linter from an XPath | make_linter_from_function_xpath make_linter_from_xpath |
| Require usage of 'colSums(x)' or 'rowSums(x)' over 'apply(x, ., sum)' | matrix_apply_linter |
| Missing argument linter | missing_argument_linter |
| Missing package linter | missing_package_linter |
| Modify lintr defaults | modify_defaults |
| Namespace linter | namespace_linter |
| Block usage of nested 'ifelse()' calls | nested_ifelse_linter |
| Block usage of pipes nested inside other calls | nested_pipe_linter |
| Non-portable path linter | nonportable_path_linter |
| Block usage of 'nrow(subset(x, .))' | nrow_subset_linter |
| Require usage of a leading zero in all fractional numerics | numeric_leading_zero_linter |
| Require usage of nzchar where appropriate | nzchar_linter |
| Object length linter | object_length_linter |
| Object name linter | object_name_linter |
| Block assigning any variables whose name clashes with a 'base' R function | object_overwrite_linter |
| Object usage linter | object_usage_linter |
| Block single-call magrittr pipes | one_call_pipe_linter |
| Require usage of '!any(x)' over 'all(!x)', '!all(x)' over 'any(!x)' | outer_negation_linter |
| Package development linters | package_development_linters |
| Package hooks linter | package_hooks_linter |
| Parenthesis before body linter | paren_body_linter |
| Raise lints for several common poor usages of 'paste()' | paste_linter |
| Pipe call linter | pipe_call_linter |
| Pipe consistency linter | pipe_consistency_linter |
| Pipe continuation linter | pipe_continuation_linter |
| Block usage of return() in magrittr pipelines | pipe_return_linter |
| Testthat linters | pkg_testthat_linters |
| Block usage of print() for logging | print_linter |
| Character string quote linter | quotes_linter |
| Read lintr settings | read_settings |
| Readability linters | readability_linters |
| Block usage of '==', '!=' on logical vectors | redundant_equals_linter |
| Prevent 'ifelse()' from being used to produce 'TRUE'/'FALSE' or '1'/'0' | redundant_ifelse_linter |
| Regular expression linters | regex_linters |
| Require usage of direct methods for subsetting strings via regex | regex_subset_linter |
| Require usage of rep_len(x, n) over rep(x, length.out = n) | rep_len_linter |
| Repeat linter | repeat_linter |
| Return linter | return_linter |
| Robustness linters | robustness_linters |
| Identify unregistered native routines | routine_registration_linter |
| Require usage of sample.int(n, m, ...) over sample(1:n, m, ...) | sample_int_linter |
| SARIF Report for lint results | sarif_output |
| Block usage like x %in% "a" | scalar_in_linter |
| Semicolon linter | semicolon_linter |
| Sequence linter | seq_linter |
| Check for common mistakes around sorting vectors | sort_linter |
| Spaces inside linter | spaces_inside_linter |
| Spaces before parentheses linter | spaces_left_parentheses_linter |
| Require correct 'sprintf()' calls | sprintf_linter |
| Block usage of all() within stopifnot() | stopifnot_all_linter |
| Require usage of 'startsWith()' and 'endsWith()' over 'grepl()'/'substr()' versions | string_boundary_linter |
| Identify cases where 'stringsAsFactors' should be supplied explicitly | strings_as_factors_linter |
| Style linters | style_linters |
| Block usage of 'file.path()' with 'system.file()' | system_file_linter |
| 'T' and 'F' symbol linter | T_and_F_symbol_linter |
| Prohibit close() from terminating a function definition | terminal_close_linter |
| Tidyverse design linters | tidy_design_linters |
| TODO comment linter | todo_comment_linter |
| Trailing blank lines linter | trailing_blank_lines_linter |
| Trailing whitespace linter | trailing_whitespace_linter |
| Undesirable function linter | undesirable_function_linter |
| Undesirable operator linter | undesirable_operator_linter |
| Unneeded concatenation linter | unnecessary_concatenation_linter |
| Block usage of anonymous functions in iteration functions when unnecessary | unnecessary_lambda_linter |
| Block instances of unnecessary nesting | unnecessary_nesting_linter |
| Block usage of pipeline placeholders if unnecessary | unnecessary_placeholder_linter |
| Block unreachable code and comments following return statements | unreachable_code_linter |
| Check that imported packages are actually used | unused_import_linter |
| Use lintr in your project | use_lintr |
| Enforce usage of scalar logical operators in conditional statements | vector_logic_linter |
| Require usage of grep over which(grepl(.)) | which_grepl_linter |
| Whitespace linter | whitespace_linter |
| Convert an XML node or nodeset into a Lint | xml_nodes_to_lints |
| Get the name of the function matched by an XPath | xp_call_name |
| Block obvious "yoda tests" | yoda_test_linter |