Static Code Analysis สำหรับ R

การเขียน R แบบ Defensive Programming

Dr. Colin Gillespie

Jumping Rivers

แพ็กเกจ lintr

  • lintr คือแพ็กเกจ R สำหรับวิเคราะห์โค้ดแบบ static
    • ตรวจสอบการปฏิบัติตาม
      • สไตล์ที่กำหนด
      • ข้อผิดพลาดทางไวยากรณ์
      • ปัญหาเชิง semantic ที่อาจเกิดขึ้น

ทำงานคล้ายกับระบบตรวจคำสะกด

การเขียน R แบบ Defensive Programming

การใช้งาน lintr

การใช้ lintr

  • บันทึกโค้ดลงในไฟล์
  • ส่งโค้ดไปยังฟังก์ชัน lint()
การเขียน R แบบ Defensive Programming

lintr ในการใช้งานจริง

สมมติว่ามีโค้ดดังนี้

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

บันทึกในไฟล์ code.R

  • การรัน lintr::lint("code.R") จะพบปัญหา 2 จุด
การเขียน R แบบ Defensive Programming

ปัญหาที่ 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 แบบ Defensive Programming

ปัญหาที่ 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 แบบ Defensive Programming

มาดู Lintr ในการใช้งานจริงกัน

การเขียน R แบบ Defensive Programming

Preparing Video For Download...