นี่คือคำสั่ง scan-build-3.8 ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
สแกนสร้าง — เครื่องวิเคราะห์สถิตเสียงดังกราว
เรื่องย่อ
สแกนสร้าง [-ohkvV] [-วิเคราะห์ส่วนหัว] [-เปิดใช้งานตัวตรวจสอบ [ตัวตรวจสอบ_ชื่อ]]
[-ปิดการใช้งานตัวตรวจสอบ [ตัวตรวจสอบ_ชื่อ---ช่วยด้วย] [--help-หมากฮอส]
[--html-ชื่อเรื่อง [=ชื่อเรื่อง---ทำต่อไป] [-plist] [-plist-html] [--สถานะ-bugs]
[--ใช้-c++ [=คอมไพเลอร์_พาธ---ใช้-ซีซี [=คอมไพเลอร์_พาธ---ดู]
[-ข้อจำกัด [แบบ--แม็กซ์ลูป N] [-no-fail-รายงาน] [-สถิติ]
[-เก็บ [แบบ]] build_คำสั่ง [build_options]
DESCRIPTION
สแกนสร้าง เป็นสคริปต์ Perl ที่เรียกใช้ตัววิเคราะห์สแตติกของ Clang ตัวเลือกที่ใช้โดย
สแกนสร้าง หรือโดยเครื่องวิเคราะห์ปรากฏขึ้นก่อนตามด้วย build_คำสั่ง และใด ๆ
build_options ปกติใช้ในการสร้างระบบเป้าหมาย
เครื่องวิเคราะห์สถิตใช้อัลกอริธึมการตรวจสอบรายการยาว ดู หมากฮอส. ผลลัพธ์สามารถเป็น
เขียนในรูปแบบ .plist และ/หรือ HTML มาตรฐาน
รองรับตัวเลือกต่อไปนี้:
-วิเคราะห์ส่วนหัว
วิเคราะห์ฟังก์ชันในไฟล์ #included ด้วย
-เปิดใช้งานตัวตรวจสอบ ตัวตรวจสอบ_ชื่อ, -ปิดการใช้งานตัวตรวจสอบ ตัวตรวจสอบ_ชื่อ
เปิดปิด ตัวตรวจสอบ_ชื่อ. ดู หมากฮอส.
-h, --ช่วยด้วย
แสดงข้อความนี้
--help-หมากฮอส
แสดงรายการตัวตรวจสอบเริ่มต้น ดู หมากฮอส.
--html-ชื่อเรื่อง[=ชื่อเรื่อง]
ระบุชื่อที่ใช้ในหน้า HTML ที่สร้างขึ้น ชื่อเริ่มต้นจะถูกสร้างขึ้นถ้า
ชื่อเรื่อง ไม่ได้ระบุ
-k, --ทำต่อไป
เพิ่มตัวเลือก “ไปต่อ” ไปที่ build_คำสั่ง. ปัจจุบันรองรับยี่ห้อและ
xcodebuild นี่เป็นตัวเลือกที่สะดวกสบาย สามารถระบุพฤติกรรมนี้ได้โดยตรง
โดยใช้ตัวเลือกการสร้าง
-o ไดเรกทอรีเป้าหมายสำหรับไฟล์รายงาน HTML ไดเรกทอรีย่อยจะถูกสร้างขึ้นตามความจำเป็นเพื่อ
แสดงถึงการเรียกแยกของตัววิเคราะห์ หากไม่ได้ระบุตัวเลือกนี้ a
ไดเร็กทอรีถูกสร้างขึ้นใน / Tmp (TMPDIR บน Mac OS X) เพื่อจัดเก็บรายงาน
-plist ส่งออกผลลัพธ์เป็นชุดของไฟล์ .plist (โดยค่าเริ่มต้นผลลัพธ์ของ สแกนสร้าง is
ชุดของไฟล์ HTML)
-plist-html
ส่งออกผลลัพธ์เป็นชุดของไฟล์ HTML และ .plist
--สถานะ-bugs
ตั้งค่าสถานะการออกเป็น 1 หากพบข้อบกพร่องที่อาจเกิดขึ้น และ 0 มิฉะนั้น โดยค่าเริ่มต้น exit
สถานะของ สแกนสร้าง คือที่กลับมาโดย build_คำสั่ง.
--ใช้-c++[=คอมไพเลอร์_พาธ]
เดาคอมไพเลอร์เริ่มต้นสำหรับโค้ด C++ และ Objective-C++ ของคุณ ใช้ตัวเลือกนี้เพื่อ
ระบุคอมไพเลอร์สำรอง
--ใช้-ซีซี[=คอมไพเลอร์_พาธ]
เดาคอมไพเลอร์เริ่มต้นสำหรับรหัส C และ Objective-C ของคุณ ใช้ตัวเลือกนี้เพื่อ
ระบุคอมไพเลอร์สำรอง
-v เอาต์พุตที่ละเอียดจาก สแกนสร้าง และเครื่องวิเคราะห์ ที่สองและสาม v เพิ่มขึ้น
การใช้คำฟุ่มเฟือย
-V, --ดู
ดูผลการวิเคราะห์ในเว็บเบราว์เซอร์เมื่อบิลด์เสร็จสิ้น
-ข้อจำกัด [แบบ]
ระบุเอ็นจิ้น contraint ที่ใช้โดยเครื่องวิเคราะห์ โดยค่าเริ่มต้น โมเดล 'ช่วง' คือ
ใช้แล้ว. การระบุ 'พื้นฐาน' ใช้แบบจำลองข้อจำกัดที่ง่ายกว่าและมีประสิทธิภาพน้อยกว่าที่ใช้โดย
ตัวตรวจสอบ -0.160 และรุ่นก่อนหน้า
-แม็กซ์ลูป N
ระบุจำนวนครั้งที่บล็อกสามารถเข้าเยี่ยมชมได้ก่อนที่จะยอมแพ้ ค่าเริ่มต้นคือ 4
เพิ่มขึ้นเพื่อให้ครอบคลุมมากขึ้นด้วยความเร็ว
-no-fail-รายงาน
อย่าสร้างไดเร็กทอรีย่อย 'ความล้มเหลว' ที่มีรายงานข้อขัดข้องของตัววิเคราะห์และ
ไฟล์ต้นฉบับที่ประมวลผลล่วงหน้า
-สถิติ สร้างสถิติการเยี่ยมชมสำหรับโครงการที่กำลังวิเคราะห์
-เก็บ [แบบ]
ระบุรูปแบบร้านค้าที่ใช้โดยเครื่องวิเคราะห์ โดยค่าเริ่มต้น รูปแบบร้านค้า 'ภูมิภาค'
ถูกนำมาใช้. 'region' ระบุโมเดลร้านค้าที่มีความละเอียดอ่อนในฟิลด์ ผู้ใช้ยังสามารถระบุ
'พื้นฐาน' ซึ่งแม่นยำน้อยกว่ามาก แต่สามารถวิเคราะห์โค้ดได้เร็วกว่า 'พื้นฐาน' คือ
รูปแบบร้านค้าเริ่มต้นสำหรับ checker-0.221 และรุ่นก่อนหน้า
EXIT สถานภาพ
สแกนสร้าง ส่งคืนค่าที่ส่งคืนโดย build_คำสั่ง เว้นแต่ --สถานะ-bugs or --ทำต่อไป
ถูกนำมาใช้.
หมากฮอส
ตัวตรวจสอบรายการด้านล่างอาจถูกเปิด/ปิดใช้งานโดยใช้ปุ่ม -เปิดใช้งานตัวตรวจสอบ และ
-ปิดการใช้งานตัวตรวจสอบ ตัวเลือก. กลุ่มตัวตรวจสอบเริ่มต้นจะทำงานเว้นแต่จะถูกปิดใช้งานอย่างชัดเจน
ตัวตรวจสอบใดที่เป็นกลุ่มเริ่มต้นคือหน้าที่ของระบบปฏิบัติการใน
ใช้; มีการระบุไว้ด้วย --help-หมากฮอส.
core.AdjustedReturnValue
ตรวจสอบเพื่อดูว่าค่าส่งคืนของการเรียกใช้ฟังก์ชันแตกต่างจากผู้เรียกหรือไม่
คาดหวัง (เช่น จากการเรียกผ่านพอยน์เตอร์ของฟังก์ชัน)
core.AttributeNonNull
ตรวจสอบพอยน์เตอร์ null ที่ส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชันที่มีอาร์กิวเมนต์เป็น
ทำเครื่องหมายด้วยแอตทริบิวต์ 'nonnull'
core.CallAndMessage
ตรวจสอบข้อผิดพลาดเชิงตรรกะสำหรับการเรียกใช้ฟังก์ชันและนิพจน์ข้อความ Objective-C
(เช่น อาร์กิวเมนต์ที่ไม่ได้กำหนดค่าเริ่มต้น ตัวชี้ฟังก์ชัน null)
core.DivideZero
ตรวจสอบการหารด้วยศูนย์
core.NullDereference
ตรวจสอบ dereferences ของพอยน์เตอร์ null
core.StackAddressEscape
ตรวจสอบว่าที่อยู่ในหน่วยความจำสแต็กไม่หลุดจากฟังก์ชัน
core.UndefinaryBinaryOperatorResult
ตรวจสอบผลลัพธ์ที่ไม่ได้กำหนดของตัวดำเนินการไบนารี
core.VLAขนาด
ตรวจสอบการประกาศ VLA ที่ไม่ได้กำหนดขนาดหรือเป็นศูนย์
core.buildin.BuiltinFunctions
ประเมินฟังก์ชันในตัวคอมไพเลอร์ เช่น จัดสรร()
core.buildin.NoReturnFunctions
ประเมินฟังก์ชัน 'ตื่นตระหนก' ที่ทราบกันดีอยู่แล้วว่าจะไม่กลับไปหาผู้โทร
core.uninitialized.ArraySubscript
ตรวจสอบค่าที่ไม่ได้กำหนดค่าเริ่มต้นที่ใช้เป็นตัวห้อยอาร์เรย์
core.unitialized.Assign
ตรวจสอบการกำหนดค่าที่ไม่ได้กำหนดค่าเริ่มต้น
core.unitialized.Branch
ตรวจสอบค่าที่ไม่ได้กำหนดค่าเริ่มต้นซึ่งใช้เป็นเงื่อนไขของสาขา
core.unitialized.CapturedBlockVariable
ตรวจสอบบล็อกที่จับค่าที่ไม่ได้กำหนดค่าเริ่มต้น
core.unitialized.UndefReturn
ตรวจสอบค่าที่ยังไม่ได้กำหนดค่าที่ถูกส่งกลับไปยังผู้โทร
deadcode.DeadStores
ตรวจสอบค่าที่เก็บไว้กับตัวแปรที่จะไม่อ่านในภายหลัง
แก้ปัญหา DumpCFG
กราฟควบคุมการแสดงผล-โฟลว์
ดีบัก DumpCallGraph
แสดงกราฟการโทร
debug.DumpDominators
พิมพ์แผนผังการครอบงำสำหรับกราฟการควบคุม-โฟลว์ที่กำหนด
ดีบัก DumpLiveVars
พิมพ์ผลการวิเคราะห์ตัวแปรสด
แก้จุดบกพร่อง สถิติ
ส่งคำเตือนด้วยสถิติของตัววิเคราะห์
แก้ปัญหา TaintTest
ทำเครื่องหมายสัญลักษณ์ที่ปนเปื้อนเช่นนี้
แก้ปัญหา ViewCFG
ดูกราฟควบคุม-โฟลว์โดยใช้ GraphViz.
แก้ปัญหา ViewCallGraph
ดูกราฟการโทรโดยใช้ GraphViz.
llvm.อนุสัญญา
ตรวจสอบรหัสสำหรับข้อตกลงฐานรหัส LLVM
osx.API ตรวจสอบการใช้งาน Mac OS X API ต่างๆ อย่างเหมาะสม
osx.AtomicCAS
ประเมินการโทรไปที่ OSอะตอม ฟังก์ชั่น
osx.SecKeychainAPI
ตรวจสอบการใช้ Secure Keychain API อย่างเหมาะสม
osx.cocoa.AtSync
ตรวจสอบพอยน์เตอร์ null ที่ใช้เป็น mutexes สำหรับ @synchronized
osx.cocoa.ClassRelease
ตรวจสอบการส่ง 'retain', 'release' หรือ 'autorelease' โดยตรงไปยังคลาส
osx.cocoa.Inเข้ากันได้กับMethodTypes
เตือนเกี่ยวกับลายเซ็นเมธอด Objective-C ที่มีความเข้ากันไม่ได้ของประเภท
osx.cocoa.NSAutoreleasePool
เตือนสำหรับการใช้งานที่ไม่เหมาะสมของ NSAutoreleaseพูล ในโหมด Objective-C GC
osx.cocoa.NSError
ตรวจสอบการใช้พารามิเตอร์ NSError**
osx.cocoa.NilArg
ตรวจสอบอาร์กิวเมนต์ nil ที่ต้องห้ามสำหรับการเรียกเมธอด Objective-C
osx.cocoa.RetainCount
ตรวจสอบการรั่วไหลและการจัดการจำนวนอ้างอิงที่ไม่เหมาะสม
osx.cocoa.SelfInit
ตรวจสอบว่า 'ตัวเอง' ถูกเตรียมใช้งานอย่างถูกต้องภายในวิธีการเริ่มต้น
osx.cocoa.UnusedIvars
เตือนเกี่ยวกับ ivars ส่วนตัวที่ไม่เคยใช้
osx.cocoa.VariadicMethodTypes
ตรวจสอบการส่งต่อประเภทที่ไม่ใช่ Objective-C ไปยังเมธอดแบบแปรผันที่คาดหวังเท่านั้น
ประเภทวัตถุประสงค์-C
osx.coreFoundation.CFEข้อผิดพลาด
ตรวจสอบการใช้พารามิเตอร์ CFErrorRef*
osx.coreFoundation.CFNumber
ตรวจสอบการใช้งานที่เหมาะสมของ CFNumberสร้าง()
osx.coreFoundation.CFRetainRelease
ตรวจสอบอาร์กิวเมนต์ที่เป็นโมฆะถึง CFเก็บ() CFlease(), และ CFMakeสะสมได้()
osx.coreFoundation.containers.OutOfBounds
ตรวจสอบดัชนีนอกขอบเขตเมื่อใช้ ซีเอฟอาร์เรย์ API
osx.coreFoundation.containers.PointerSizedValues
เตือนถ้า ซีเอฟอาร์เรย์, CFDพจนานุกรมหรือ CFSet ถูกสร้างขึ้นด้วยค่าที่ไม่ใช่ขนาดตัวชี้
ความปลอดภัยFloatLoopCounter
เตือนการใช้ค่าทศนิยมเป็นตัวนับลูป (CERT: FLP30-C, FLP30-CPP)
security.insecureAPI.UncheckedReturn
เตือนการใช้ฟังก์ชันที่ต้องตรวจสอบค่าส่งคืนเสมอ
security.insecureAPI.getpw
เตือนการใช้ รับ()
security.insecureAPI.gets
เตือนการใช้ ได้รับ()
security.insecureAPI.mkstemp
เตือนเมื่อ มคส() ถูกส่งผ่านน้อยกว่า 6 X ในสตริงรูปแบบ
security.insecureAPI.mktemp
เตือนการใช้ mktemp()
security.insecureAPI.rand
เตือนการใช้ ทั้งหมด() สุ่ม() และหน้าที่ที่เกี่ยวข้อง
security.insecureAPI.strcpy
เตือนการใช้ สตริคปี() และ สเตรทแคท()
security.insecureAPI.vfork
เตือนการใช้ ส้อม()
ยูนิกซ์ API
ตรวจสอบการเรียกใช้ฟังก์ชัน UNIX/Posix ต่างๆ
ยูนิกซ์. Malloc
ตรวจสอบการรั่วไหลของหน่วยความจำ ฟรีสองเท่า และไม่ต้องใช้งานภายหลัง
unix.cstring.BadSizeArg
ตรวจสอบอาร์กิวเมนต์ขนาดที่ส่งผ่านไปยังฟังก์ชันสตริง C สำหรับข้อผิดพลาดทั่วไป
รูปแบบ
unix.cstring.NullArg
ตรวจสอบพอยน์เตอร์ null ที่ส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชันสตริง C
ตัวอย่าง
สแกนสร้าง -o /tmp/myhtmldir ทำ -j4
ตัวอย่างข้างต้นทำให้รายงานการวิเคราะห์ถูกฝากไว้ในไดเร็กทอรีย่อยของ
/tmp/myhtmldir และวิ่ง ทำ กับ -j4 ตัวเลือก. ไดเร็กทอรีย่อยอื่นถูกสร้างขึ้น
แต่ละครั้ง สแกนสร้าง วิเคราะห์โครงการ เครื่องวิเคราะห์ควรสนับสนุนบิลด์แบบขนานส่วนใหญ่
แต่ไม่กระจายบิลด์
ผู้เขียน
สแกนสร้าง เขียนโดย Ted Kremenek เอกสารประกอบโดย
เจมส์ เค. โลว์เดน[ป้องกันอีเมล]>.
ใช้ scan-build-3.8 ออนไลน์โดยใช้บริการ onworks.net