เครื่องมือฟรีในการตรวจสอบซอร์สโค้ด C / C ++ กับชุดของมาตรฐานการเข้ารหัสหรือไม่ [ปิด]


151

มันดูง่ายที่จะหาเครื่องมือเช่นนี้สำหรับ Java ( Checkstyle , JCSC ) แต่ฉันไม่สามารถหาเครื่องมือสำหรับ C / C ++ ได้ ฉันไม่ได้มองหาเครื่องวิเคราะห์รหัสแบบคงที่ที่เป็นขุยฉันต้องการตรวจสอบกับมาตรฐานการเข้ารหัสเช่นการตั้งชื่อตัวแปรการใช้อักษรตัวพิมพ์ใหญ่การเว้นวรรคการระบุตำแหน่งการวางวงเล็บและอื่น ๆ


3
หากคุณไม่พบคำตอบที่คุณต้องการที่นี่ลองพิจารณาคำถามนี้: stackoverflow.com/q/10819398/120163
Ira Baxter

คำตอบ:


57

เครื่องมือเดียวที่ผมรู้ก็คือเวร่า ไม่ได้ใช้มันดังนั้นจึงไม่สามารถแสดงความคิดเห็นว่ามันทำงานได้อย่างไร การสาธิตดูมีแนวโน้ม


ฉันได้ทำการทดสอบแล้วและมันค่อนข้างง่าย แต่มันใช้งานได้!
Jader Dias

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

Vera ไม่มีกฎที่ครอบคลุมมาก - แต่สามารถขยายได้ (ใน TCL)
fmuecke

2
"Extensible" สำหรับงานที่ง่ายมากเท่านั้น เนื่องจากความเข้าใจของ Vera เกี่ยวกับ C ++ นั้นตื้นดังนั้นกฎ "deep style check" ใด ๆ (พิจารณาถึงความเป็นไปได้ [ฉันไม่แนะนำให้ดี] กฎ: สำหรับการจัดสรรทุกครั้งการจัดสรรคืนที่สอดคล้องกันในฟังก์ชันเดียวกันจะต้องเข้ารหัสความรู้ C ++ ที่เหมาะสม และนั่นยากจริงๆซึ่งหมายความว่าจะไม่เกิดขึ้น
Ira Baxter

ลิงก์ถาวรไปยัง Vera: bitbucket.org/verateam/vera
congusbongus

49

Google C ++ ผ้าสำลีจาก คู่มือสไตล์โค้ด Google


4
+1 นี่เป็นสิ่งที่ดีมาก - แม้ว่ามันจะมีสไตล์ที่เข้มงวดมาก ไม่ใช่เรื่องง่ายที่จะขยายด้วยกฎของตัวเองเช่นเดียวกับ vera ++
fmuecke

ดีมากถ้าคุณใช้สไตล์ C ++ ของ Google :) +1
jkp

3
ฉันคิดว่าตอนนี้คือสิ่งที่เรียกว่าcpplintซึ่งสามารถพบได้ที่github.com/google/styleguide/tree/gh-pages/cpplintลิงก์ด้านบนไปยัง c ++ lint เสีย
Zitrax

สำหรับการอ้างอิงเพื่อติดตั้งคุณสามารถใช้ "pip install cpplint" จากนั้นคุณสามารถใช้ "cpplint file.cpp" หรือ "cpplint --recursive" แทนที่จะเป็น "./cpplint.py" ซึ่งเป็น IMO ที่นิยมกว่ามาก ง่ายกว่าการดาวน์โหลดผ่าน GitHub อย่างน้อย
Colin D


8

ฉันแน่ใจว่านี้อาจช่วยในการศึกษาระดับปริญญาบางส่วนตรวจสอบ cxx เครื่องมือนี้ดูเหมือนว่าจะดีมาก ๆKWStyleมาจาก Kitware พวกที่พัฒนา Cmake


1
cxxchecker ดูเหมือนจะตายแล้วสำหรับฉันตอนนี้
stefanct

ตัวตรวจสอบ cxxเป็นลิงค์ที่ไม่ทำงาน
Wolf

7

ไม่ว่าคุณจะขออะไร แต่ฉันพบว่ามันง่ายกว่าที่ทุกคนจะเห็นด้วยกับastyleมาตรฐานการเข้ารหัสที่สามารถสร้างแล้วอัตโนมัติกระบวนการ


1
คุณควรระบุไว้อย่างชัดเจนว่าArtisticStyle มุ่งเน้นที่การจัดรูปแบบซึ่งแน่นอนว่าไม่ใช่เรื่องเลวร้าย :)
Wolf

6

ลองnsiqcppstyle มันเป็นตัวตรวจสอบลักษณะการเข้ารหัสตาม Python สำหรับ C / C ++ ขยายได้ง่ายเพื่อเพิ่มกฎของคุณเอง



2

ฉันใช้เครื่องมือในการทำงานชุดเครื่องมือ LDRAของมัน

ใช้สำหรับทดสอบรหัส c / c ++ แต่สามารถตรวจสอบกับมาตรฐานการเข้ารหัสเช่น MISRA เป็นต้น


1
ทำไมสิ่งนี้ถึงลง modded? แม้ว่า LDRA นั้นยังเป็นตัววิเคราะห์แบบสแตติก - สิ่งที่คำถามไม่ได้ค้นหา - ฉันเชื่อว่ามันยังสามารถตรวจสอบรหัสสำหรับการละเมิดมาตรฐานการเข้ารหัสได้อีกด้วย
Vitor Py

4
LDRA มีค่าใช้จ่ายมากเท่ากับรถยนต์ทั่วไปของคุณ ... ไม่ใช่ความคิดของฉันฟรี
Lundin

2

ตรวจสอบuniversalindentguiในsourceforge.net

มันมีตัวตรวจสอบรูปแบบมากมายสำหรับ C และคุณสามารถปรับแต่งตัวตรวจสอบ


UniversalIndentGUIมันมีฟังก์ชั่นการแสดงตัวอย่างแบบสดสามารถส่งออกการกำหนดค่าและสคริปต์การส่งออก มันยอดเยี่ยมสำหรับการทดลองใช้ "ตัวเยื้อง" ที่แตกต่างกันเช่น GNU Indent, Artistic Style และ Uncrustify
congusbongus

1

มีcppcheckซึ่งฮัดสันได้รับการสนับสนุนผ่านปลั๊กอินชื่อเดียวกัน


4
cppcheck เป็นเครื่องมือวิเคราะห์แบบคงที่และไม่ใช่สิ่งที่คำถามกำลังมองหา
Vitor Py

อาจมีการเปลี่ยนแปลงตั้งแต่ปี 2010: วันนี้ Cppcheck ยังมีคำเตือนสำหรับปัญหาเกี่ยวกับสไตลิส แต่ก็ดีโอพีที่แยกการวิเคราะห์สแตติกโค้ดอย่างชัดเจน
Wolf

1

ตรวจสอบ Metrix ++ http://metrixplusplus.sourceforge.net/ อาจต้องใช้ส่วนขยายบางอย่างที่เฉพาะเจาะจงสำหรับความต้องการของคุณ



-1

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

แต่น่าเสียดายที่โครงการยังไม่พร้อมที่จะถูกนำมาใช้โดยไม่ต้องมีความรู้แตกฉานเป็นธรรมของรหัส ( อ่าน: มันเป็นนรกรถทั้งหมด ) อย่างไรก็ตามเรากำลังจะย้ายอย่างรวดเร็วและหวังว่าจะมีการเปิดตัวเบต้าภายใน 8 สัปดาห์ข้างหน้า

โครงการเป็นโอเพ่นซอร์ส - คุณสามารถเยี่ยมชมหน้าโครงการและหากคุณต้องการมีส่วนร่วมเราจะรักการป้อนข้อมูลภายนอกเพิ่มเติม

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

หากคุณต้องการข้อมูลเพิ่มเติมโปรดอย่าลังเลที่จะติดต่อฉัน

ไชโย


4
ความมุ่งมั่นล่าสุดคือในเดือนมิถุนายน 2009 ดูเหมือนว่าจะไม่ได้รับการพัฒนาอีกต่อไป
Eponymous
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.