Absolute path linter | absolute_path_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 |
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 |
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 |
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 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 |
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 |