Skip to contents
    
  
    
      - 
          
T_and_F_symbol_linter()
         
        T and F symbol linter 
      
- 
          
absolute_path_linter()
         
        - Absolute path linter
 
      
- 
          
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
 
      
- 
          
backport_linter()
         
        - Backport linter
 
      
- 
          
boolean_arithmetic_linter()
         
        - Require usage of boolean operators over equivalent arithmetic
 
      
- 
          
brace_linter()
         
        - Brace linter
 
      
- 
          
class_equals_linter()
         
        - Block comparison of class with 
== 
      
- 
          
commas_linter()
         
        - Commas linter
 
      
- 
          
commented_code_linter()
         
        - Commented code linter
 
      
- 
          
comparison_negation_linter()
         
        - Block usages like !(x == y) where a direct relational operator is appropriate
 
      
- 
          
condition_call_linter()
         
        - Recommend usage of 
call. = FALSE in conditions 
      
- 
          
condition_message_linter()
         
        - Block usage of 
paste() and paste0() with messaging functions using ... 
      
- 
          
conjunct_test_linter()
         
        - Force 
&& conditions to be written separately where appropriate 
      
- 
          
consecutive_assertion_linter()
         
        - Force consecutive calls to assertions into just one when possible
 
      
- 
          
consecutive_mutate_linter()
         
        - Require consecutive calls to mutate() to be combined when possible
 
      
- 
          
cyclocomp_linter()
         
        - Cyclomatic complexity linter
 
      
- 
          
duplicate_argument_linter()
         
        - Duplicate argument linter
 
      
- 
          
empty_assignment_linter()
         
        - Block assignment of 
{} 
      
- 
          
equals_na_linter()
         
        - Equality check with NA linter
 
      
- 
          
expect_comparison_linter()
         
        - Require usage of 
expect_gt(x, y) over expect_true(x > y) (and similar) 
      
- 
          
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_named_linter()
         
        - Require usage of 
expect_named(x, n) over expect_equal(names(x), n) 
      
- 
          
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), type) 
      
- 
          
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
 
      
- 
          
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
 
      
- 
          
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 appropriate 
      
- 
          
implicit_assignment_linter()
         
        - Avoid implicit assignment in function calls
 
      
- 
          
implicit_integer_linter()
         
        - Implicit integer linter
 
      
- 
          
indentation_linter()
         
        - Check that indentation is consistent
 
      
- 
          
infix_spaces_linter()
         
        - Infix spaces linter
 
      
- 
          
inner_combine_linter()
         
        - Require 
c() to be applied before relatively expensive vectorized functions 
      
- 
          
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
 
      
- 
          
lengths_linter()
         
        - Require usage of 
lengths() where possible 
      
- 
          
library_call_linter()
         
        - Library call linter
 
      
- 
          
line_length_linter()
         
        - Line length linter
 
      
- 
          
list_comparison_linter()
         
        - Block usage of comparison operators with known-list() functions like lapply
 
      
- 
          
literal_coercion_linter()
         
        - Require usage of correctly-typed literals over literal coercions
 
      
- 
          
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
 
      
- 
          
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
 
      
- 
          
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
 
      
- 
          
object_length_linter()
         
        - Object length linter
 
      
- 
          
object_name_linter()
         
        - Object name linter
 
      
- 
          
object_overwrite_linter()
         
        - Block assigning any variables whose name clashes with a 
base R function 
      
- 
          
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
 
      
- 
          
paste_linter()
         
        - Raise lints for several common poor usages of 
paste() 
      
- 
          
pipe_call_linter()
         
        - Pipe call linter
 
      
- 
          
pipe_consistency_linter()
         
        - Pipe consistency linter
 
      
- 
          
pipe_continuation_linter()
         
        - Pipe continuation linter
 
      
- 
          
pipe_return_linter()
         
        - Block usage of return() in magrittr pipelines
 
      
- 
          
print_linter()
         
        - Block usage of print() for logging
 
      
- 
          
quotes_linter()
         
        - Character string quote linter
 
      
- 
          
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_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
 
      
- 
          
routine_registration_linter()
         
        - Identify unregistered native routines
 
      
- 
          
sample_int_linter()
         
        - Require usage of sample.int(n, m, ...) over sample(1:n, m, ...)
 
      
- 
          
scalar_in_linter()
         
        - Block usage like x %in% "a"
 
      
- 
          
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 
      
- 
          
stopifnot_all_linter()
         
        - Block usage of all() within stopifnot()
 
      
- 
          
string_boundary_linter()
         
        - Require usage of 
startsWith() and endsWith() over grepl()/substr() versions 
      
- 
          
strings_as_factors_linter()
         
        - Identify cases where 
stringsAsFactors should be supplied explicitly 
      
- 
          
system_file_linter()
         
        - Block usage of 
file.path() with system.file() 
      
- 
          
terminal_close_linter()
         
        - Prohibit close() from terminating a function definition
 
      
- 
          
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
 
      
- 
          
unnecessary_concatenation_linter()
         
        - Unneeded concatenation linter
 
      
- 
          
unnecessary_lambda_linter()
         
        - Block usage of anonymous functions in iteration functions when unnecessary
 
      
- 
          
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
 
      
- 
          
vector_logic_linter()
         
        - Enforce usage of scalar logical operators in conditional statements
 
      
- 
          
which_grepl_linter()
         
        - Require usage of grep over which(grepl(.))
 
      
- 
          
whitespace_linter()
         
        - Whitespace linter
 
      
- 
          
yoda_test_linter()
         
        - Block obvious "yoda tests"
 
      
 
      Common default configurations