R 的靜態程式碼分析

R 防禦式程式設計

Dr. Colin Gillespie

Jumping Rivers

lintr 套件

  • lintr 是一個提供 R 靜態程式碼分析的 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...