0Pricing
C++ Academy · บทเรียน

เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck

ตรวจจับข้อบกพร่องก่อนเริ่มทำงานด้วย clang-tidy และ cppcheck

เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องวิเคราะห์แบบสถิต

เครื่องมือวิเคราะห์แบบสถิตจะอ่านโค้ดโดยไม่เรียกใช้ และแจ้งข้อผิดพลาดที่อาจเกิดขึ้น รูปแบบการเขียนที่ไม่เหมาะสม และโอกาสในการปรับโค้ดให้ทันสมัย เป็นการป้องกันความเสี่ยงที่คุ้มค่าสำหรับโค้ดเบส C++

clang-tidy

clang-tidy เป็นเครื่องมือตรวจสอบโค้ดที่ใช้ Clang และมีการตรวจสอบหลายร้อยรายการ ใช้ compile_commands.json เดียวกับที่สภาพแวดล้อมการพัฒนาแบบผสานรวมของคุณใช้

clang-tidy main.cpp -- -std=c++20

การเลือกการตรวจสอบ

เปิดใช้หมวดหมู่การตรวจสอบด้วย -checks= กลุ่มที่ใช้บ่อย ได้แก่ modernize-*, bugprone-*, performance-* และ readability-*

clang-tidy main.cpp -checks="-*,modernize-*,bugprone-*,performance-*"

ไฟล์การกำหนดค่า

วางไฟล์ .clang-tidy ไว้ที่รากของที่เก็บโค้ดเพื่อแบ่งปันการตั้งค่าระหว่างทีม

Checks: >
  -*,
  modernize-*,
  bugprone-*,
  performance-*,
  readability-magic-numbers
WarningsAsErrors: ""
HeaderFilterRegex: ".*"

การตรวจสอบเพื่อปรับให้ทันสมัย

การตรวจสอบเพื่อปรับให้ทันสมัยช่วยยกระดับโค้ดเก่า ได้แก่ modernize-use-nullptr, modernize-use-auto และ modernize-loop-convert แต่ละรายการสามารถใช้การแก้ไขโดยอัตโนมัติด้วย -fix

Cppcheck

cppcheck เป็นเครื่องมือวิเคราะห์อีกชนิดหนึ่งที่เน้นตรวจหาข้อผิดพลาด เช่น การยกเลิกการอ้างอิงตัวชี้ว่าง ตัวแปรที่ยังไม่ได้กำหนดค่า และการรั่วไหลของหน่วยความจำ โดยมักตรวจพบสิ่งที่ clang-tidy พลาดไป

cppcheck --enable=all --std=c++20 src/

ใช้ทั้งสองอย่างร่วมกัน

cppcheck และ clang-tidy ช่วยเสริมการทำงานซึ่งกันและกัน กระบวนการทำงานแบบการผสานรวมอย่างต่อเนื่องมักเรียกใช้ทั้งสองอย่างและรวมรายงานเข้าด้วยกัน

การผสานรวมกับสภาพแวดล้อมการพัฒนา

VS Code, CLion, Visual Studio และ Qt Creator ล้วนผสานรวมกับ clang-tidy ได้ คุณจะเห็นคำเตือนขณะพิมพ์

การแก้ไขในวงกว้าง

clang-tidy -fix ใช้การแก้ไขที่แนะนำโดยอัตโนมัติ เรียกใช้กับที่เก็บโค้ดทั้งหมดเพื่อปรับโค้ดให้ทันสมัยอย่างรวดเร็ว

การระงับผลบวกลวง

ระงับคำเตือนรายการเดียวในบรรทัดนั้นได้ด้วยความคิดเห็น

int x;  // NOLINT(cppcoreguidelines-init-variables)

การวิเคราะห์แบบสถิตเทียบกับแบบไดนามิก

การวิเคราะห์แบบสถิตค้นหาข้อผิดพลาดโดยไม่เรียกใช้โค้ด ส่วนการวิเคราะห์แบบไดนามิก (ด้วยเครื่องมือตรวจสอบ) ค้นหาข้อผิดพลาดระหว่างการทำงาน ควรใช้ทั้งสองแบบ เพราะแต่ละแบบตรวจพบปัญหาต่างกัน

การนำไปใช้กับโค้ดเก่า

การเปิดใช้การตรวจสอบทั้งหมดพร้อมกันในโค้ดเบสเก่าจะสร้างผลลัพธ์จำนวนมากจนจัดการได้ยาก ให้นำมาใช้ทีละขั้นตอน เปิดใช้การตรวจสอบหนึ่งรายการ แก้คำเตือน ล็อกการตั้งค่าไว้ในการผสานรวมอย่างต่อเนื่อง แล้วทำซ้ำ

ตรวจสอบอย่างรวดเร็ว

กลุ่มการตรวจสอบใดของ clang-tidy ช่วยยกระดับโค้ดเก่าให้ใช้สำนวน C++ สมัยใหม่

สรุปทบทวน

เครื่องมือวิเคราะห์แบบสถิติ เช่น clang-tidy และ cppcheck ตรวจพบข้อผิดพลาดก่อนการทำงาน กำหนดค่าด้วย .clang-tidy สำหรับแต่ละโครงการ ใช้ modernize-* เพื่อปรับโค้ดเก่าให้ทันสมัยโดยอัตโนมัติ และผสานรวมกับสภาพแวดล้อมการพัฒนาและการผสานรวมอย่างต่อเนื่องเพื่อรับผลตอบกลับอย่างต่อเนื่อง

คำถามที่พบบ่อย

บทเรียน “เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck”

ตรวจจับข้อบกพร่องก่อนเริ่มทำงานด้วย clang-tidy และ cppcheck คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck
  2. Sanitizers: Address Thread UB Sanitizer
  3. การฟัซด้วย libFuzzer
  4. การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++
← กลับไปที่ C++ Academy