R 的静态代码分析

R 防御式编程

Dr. Colin Gillespie

Jumping Rivers

lintr 包

  • lintr 是一个用于 R 的静态代码分析包
    • 它检查是否遵循
      • 指定的风格
      • 语法错误
      • 潜在语义问题

类似拼写检查器的工作方式

R 防御式编程

使用 lintr

要使用 lintr

  • 将代码存为文件
  • 将代码传给 lint() 函数
R 防御式编程

lintr 实战

假设有以下代码:

my_bad<-function(x, y) {
  x+y
}

保存在文件 code.R 中。

  • 运行 lintr::lint("code.R") 会标出两个问题
R 防御式编程

问题 1

my_bad<-function(x,y) {
  x+y
}
r[[1]]
tmp.R:1:7: style: Put spaces around all infix operators.
my_bad<-function(x,y) {
     ~^~~
my_bad <- function()
R 防御式编程

问题 2

my_bad<-function(x,y) {
  x+y
}
r[[3]]
tmp.R:2:4: style: Put spaces around all infix operators.
  x+y
  ~^~
 x + y
R 防御式编程

看看 Lintr 的实际效果

R 防御式编程

Preparing Video For Download...