Screen Shot 2558-10-14 at 10.45.59 AM
เมื่อวานได้ทำการ review code ของทีมพัฒนา Android application
โดยได้ทำการแนะนำให้ใช้งาน Android Lint
เพื่อช่วยวิเคราะห์ source code
เพื่อช่วยปรับปรุง source code ให้ดีขึ้น

ซึ่ง Android developer ที่ดีควรรู้จัก และ นำมาใช้งานนะ

เริ่มด้วยทำความรู้จักกับ Android Lint กันก่อน

เป็น Static code analysis tool ตัวหนึ่ง
โดย lint จะมีในทุก ๆ ภาษาโปรแกรมนะครับ

สำหรับการตรวจสอบ source code ของ Android project ว่า

  • ส่วนไหนที่อาจจะทำให้เกิด bug หรือ ข้อผิดพลาด
  • ส่วนไหนที่ควร optimize
  • ส่วนไหนที่ควรแก้ไขให้ถูกต้อง
  • ส่วนไหนที่มีปัญหาเรื่อง security
  • ส่วนไหนที่มีปัญหาเรื่อง performance
  • ส่วนไหนมีปัญหาเรื่อง usability และ acessibility
  • จัดการ resource ต่าง ๆ ใน project ถูกต้อง และ เหมาะสมหรือไม่ ?
  • จัดการ I18n ( Internationalization ) ถูกต้อง และ เหมาะสมหรือไม่ ?
  • สิ่งที่ใช้งานนั้น มันสนับสนุนตาม Target API ที่กำหนดไว้ใน project หรือไม่ ?
  • มีการใช้งาน API ที่มัน deprecated หรือไม่ ?
  • และอื่น ๆ อีกมากมาย

โครงสร้างการทำงานของ Android Lint เป็นดังรูป

lint

จากรูป ประกอบไปด้วยส่วนต่าง ๆ ดังนี้

App Source Files
คือทุก ๆ อย่างที่อยู่ใน project
เช่น source code, xml, resource file และ configuration file เป็นต้น

ไฟล์ lint.xml
คือ configuration file ของ Android Lint นั่นเอง
ซึ่งเปิดโอกาสให้เราทำการ custom ตามที่เราต้องการได้
เช่นต้องการ exclude บางไฟล์ เป็นต้น

Lint tool
คือตัว lint นั่นเอง เราสามารถใช้งานผ่าน command line ได้
ซึ่ง Android developer รู้ไหมว่า
lint นั้นมันมีมาใน Android SDK อยู่แล้ว
มันอยู่ใน ANDROID_SDK_HOME/tools นั่นเอง ลองไปดูได้ครับ

ลอง run Lint หน่อยสิ
$lint app

ได้ผลประมาณนี้
Screen Shot 2558-10-14 at 10.06.27 AM

Lint Output
จะแสดงผ่านทั้ง console, file และ Event log ใน Android Studio
ตัวอย่าง การแสดงผลทาง console

Screen Shot 2558-10-14 at 10.31.55 AM

แต่สำหรับเหล่า Android developer ให้เริ่มต้นจาก Android Studio ก่อนดีกว่า !!

รู้ไหมว่า Android Studio นั้น มันเอา lint มารวมให้ใช้อยู่แล้ว
อยู่ในส่วนของ Analyze -> Inspect Code …
หรือเรียกว่า IDE Inspector
จะทำงานอย่างอัตโนมัติเมื่อเราทำการ build project

โดยการทำงานของ Lint จะอยู่ใน Verification tasks ของ Gradle
แสดงดังรูป

Screen Shot 2558-10-14 at 10.17.14 AM

ดังนั้นเราสามารถใช้งาน Lint ผ่าน gradlw ได้ดังนี้
$gradlew lint

ผลการทำงานจะเป็นดังรูป
โดยจะสร้างรายงานออกมาในรูปแบบของ HTML และ XML
เราสามารถนำไปใช้งานในระบบการ Build แบบอัตโนมัติ
ผ่านระบบ Continuous Integration ต่อไปได้ด้วย

Screen Shot 2558-10-14 at 10.31.55 AM

ลองไปดูรายงานกันหน่อย

Screen Shot 2558-10-14 at 10.33.31 AM

แต่ถ้าการใช้งานผ่าน command line มันยาก ( แต่ต้องใช้งานเป็นนะ )

ให้ไปใช้งานผ่าน Android Studio เลย
โดยไปที่เมนู Analyze -> Inspect Code …
จะพบว่ามันมีการตรวจสอบ code ที่เยอะมาก ๆ ดังรูป

Screen Shot 2558-10-14 at 10.12.28 AM

ลองเข้าไปดูหน่อยว่าใน Android Lint มีการตรวจสอบอะไรบ้าง ดังรูป

Screen Shot 2558-10-14 at 10.12.43 AM

จากนั้นก็กด OK แล้วสั่ง Run Lint เลย
จะได้ผลออกมา
ซึ่งทุก ๆ คนอาจจะตกใจในจำนวนของสิ่งที่ต้องแก้ไข
ผมจะเรียกว่า หนี้ ที่คุณต้องชดใช้ !!

Screen Shot 2558-10-14 at 11.10.12 AM

สุดท้ายลองถามตัวเราเองสิว่า

เรารู้จัก Android Lint หรือไม่ ?
เราได้นำ Android Lint มาใช้งานหรือไม่ ?

ถ้าตอบว่า ไม่
ผมแนะนำให้นำมาใช้เดี๋ยวนี้เลยครับ
เพื่อจะไม่สร้าง source code ให้เป็นภาระแก่คนอื่น และ ลูกหลาน !!

วันนี้คุณใช้ Android Lint แล้วหรือยัง ?