C/C++ Advanced Lint Extension ที่ต้องมีสำหรับคนเขียนโปรแกรม C/C++

บทความนี้จะมาแนะนำ Extension ที่สำหรับคนเขียนโปรแกรม C/C++ จำเป็นอย่างยิ่งที่ควรจะมีติดไว้ใน Vs code นั้นก็คือ C/C++ Advanced Lint โดยเจ้า C/C++ Advanced Lint ตัวนี้จะทำหน้าที่เป็นตัวตรวจสอบข้อผิดพลาดในการเขียน Code ของเรา หรือการเขียนที่มีโอกาสที่จะเกิด Bug โดยทุกครั้งที่เราเขียน Code หรือทุกครั้งที่เรา save ไฟล์ C/C++ Advanced Lint จะสั่งให้ Static analysis ตรวจสอบ Code โดยอัตโนมัติ โดยรองรับ Static analysis ต่างๆ ไม่ว่าจะเป็น Cppcheck, Clang, หรือ FlexeLint

มาดูวิธีการติดตั้งและใช้งานกันดีกว่า ในที่นี้จะยกตัวอย่างการใช้งาน C/C++ Advanced Lint ร่วมกับ Cppcheck

โดยลง Extension ที่มีชื่อว่า C/C++ Advanced Lint

สำหรับการใช้งาน ก่อนอื่นให้เราลง Cppcheck สามารถทำตามบทความนี้ได้เลยถ้าใครไม่เคยลง แนะนำโปรแกรม Cppcheck

หลังจากลงเสร็จแล้วก็ Restart แล้วอย่าลืมทดลองใช้ command cppcheck –version ถ้าขึ้นเวอร์ชั่นก็ถือว่าติดตั้งได้สำเร็จ

หลังจากนั้นก็จากนั้นก็เข้ามา Setting C/C++ Advanced Lint Extension โดยเลือก Enable Cppcheck และ Cppcheck Executable เลือก cppcheck

ส่วน Language ก็เลือกตามที่เราใช้งาน ในที่นี้เลือกเป็น C และเราอยากจะให้ Lint ทำการเช็ค Code เราตอนไหน สามารถเลือกได้ระหว่าง หลังจากเรากด Save ไฟล์ก็เลือก onSave หรือ จะให้ตรวจสอบไปเรื่อยๆขณะพิมพ์ก็เลือกเป็น onType

พอตอนเราใช้งานจริงก็จะขึ้นดังรูปให้เราดูตรง tab ที่เขียนว่า PROBLEMS ก็จะเห็นว่ามีการแจ้งเตื่อน และ warning ขึ้นมาดังรูป ทำให้การเขียน code ของเราสามารถตรวจเจอ Bug ได้เร็วและไม่มีปัญหาต่อไปภายหลัง เรียกได้ว่า เจอ Bug ตั้งแต่เนิ่นๆกันเลยทีเดียว

แนะนำโปรแกรม Cppcheck

Cppcheck เป็นโปรแกรมที่เอาไว้ตรวจสอบวิเคราะห์การเขียนโปรแกรมภาษา C หรือ C++ (รวมไปถึง Embedded C/C++ ด้วย) ที่ไม่ถูกต้องหรืออาจมีโอกาสทำให้เกิด Bug หรือสามารถเรียกได้อีกแบบว่าเป็น C/C++ static code analysis tool ซึ่ง Cppcheck นั้นสามารถแสดงผลการตรวจเช็คโดยแจ้งเตือนได้หลายแบบหลายระดับตั้งแต่ระดับ Warning ไปจนถึง Critical ทำให้เราสามารถเขียน Code ภาษา C หรือ C++ ได้อย่างมีประสิทธิภาพลดความผิดพลาดลดโอกาสการเกิด Bug โดยบทความนี้จะมาแนะนำวิธีใช้งานเบื้องต้นและการนำไปใช้งาน

โดยเพื่อนๆสามารถ Download Cppcheck นำไปใช้งานได้ฟรีๆที่ http://cppcheck.sourceforge.net/

เลือกโหลดที่ Windows 64-bit Installer

 

การสร้างโปรเจคใน Cppcheck ครั้งแรก

หลังจากเราติดตั้งเสร็จแล้ว ให้เราเปิดโปรแกรมมาแล้วเลือกไปที่  File เลือก New Project File

 

เลือกที่ Save Project

 

ที่แถบ Paths and Defines ให้ กด Add ทั้งสอง ที่ Paths และ Include Paths ให้เลือกที่เก็บ Folder ของไฟล์โปรแกรมของเรา (.c, .h, .cpp)

 

ที่แถบ Addon ให้เราเลือก  Cert ด้วย โดยโปรแกรมจะทำการตรวจเช็คตามกฏต่างๆของ Cert coding standard (มาตรฐานการเขียน Code ภาษา C และ C++ สามารถดูเพิ่มเติมได้ที่ https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard และ https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682) แล้วก็กด OK

 

กด Yes ต่อ

Cppcheck จะทำการตรวจสอบ Code ของเราและแสดงผลการตรวจสอบ โดยแบ่งเป็น Errors, Warning, Styles warning, Portability waring, Performance warning และ Information message โดยสามารถเลือกเปิดปิดดูได้ที่ไอคอนด้านบนได้เลย

 

 

สามารถทดลองตรวจสอบ Code ของเรา โดยทดลองใช้งาน Demo ตรวจสอบผ่านเว็บได้่ที่

http://cppcheck.net/demo/

วิธี Setting Cppcheck ให้ใช้งานกับ Sublime Text หรือ Notepad++

เวลาเราใช้ Cppcheck เพื่อตรวจสอบ Source code ของเรา หากเราเจอ error หรือ warning แล้วต้องการแก้ไขผ่าน Text Editor ที่เราใช้งานอยู่เป็นประจำเช่น Sublime Text หรือ Notepad++

เราสามารถ Setting Cppcheck ได้ตามนี้เลย ก่อนอื่นให้ไปที่ Edit>Preferences
cppcheck-line-1

มาที่ Tab Applications ให้เราทำการ Add โปรแกรมที่เราอยากจะใช้เป็น Text Editor เข้าไป จากตัวอย่างจะ Add Notepad++ และ Sublime Text 3
cppcheck-line-2

โดยค่า Setting ของ Sublime Text ก็จะต้องใส่ Name, Executable path แล้วก็ Parameters โดยให้ใส่ Parameters ว่า (file):(line):0 ซึ่ง file นี้หมายถึงชื่อไฟล์ เช่น test.c และ line ก็คือเลขบรรทัด ส่วน 0 ก็คือ คอลัมน์ที่ 0 คอลัมน์แรกนั้นเอง
cppcheck-line-3

ส่วน Notepad++ ก็ใส่ Parameters ว่า –n(line) (file)
cppcheck-line-4

ลองทดลองใช้โดย Setting ให้ Sublime Text เป็นตัว Default กดเช็ค Code ดูมี Warning ดังภาพ แล้วดับเบิลคลิกดูหน่อย
cppcheck-line-0

โปรแกรมก็จะเปิด Sublime Text ขึ้นมาแล้ววิ่งไปที่บรรทัดที่มีปัญหาได้อย่างถูกต้องแล้ว
cppcheck-line-5