Skip to contents

The default print method for character vectors is appropriate for interactively inspecting objects, not for logging messages. Thus checked-in usage like print(paste('Data has', nrow(DF), 'rows.')) is better served by using cat(), e.g. cat(sprintf('Data has %d rows.\n', nrow(DF))). Note that using cat() entails supplying your own line returns; glue::glue() might be preferable to sprintf() for constructing templated strings. Alternatively, writeLines() can be used to print character vectors with their own line returns. Lastly, note that message() differs slightly from cat() in that it prints to stderr by default, not stdout, but is still a good option to consider for logging purposes.

Usage

print_linter()

See also

linters for a complete list of linters available in lintr.

Examples

# will produce lints
lint(
  text = "print('a')",
  linters = print_linter()
)
#> <text>:1:1: warning: [print_linter] Use cat() instead of print() logging messages. Use message() in cases calling for a signalled condition.
#> print('a')
#> ^~~~~~~~~~

lint(
  text = "print(paste(x, 'y'))",
  linters = print_linter()
)
#> <text>:1:1: warning: [print_linter] Use cat() instead of print() logging messages. Use message() in cases calling for a signalled condition.
#> print(paste(x, 'y'))
#> ^~~~~~~~~~~~~~~~~~~~

# okay
lint(
  text = "print(x)",
  linters = print_linter()
)
#>  No lints found.