"Firehose" เป็นแพ็คเกจ Python ที่มีไว้สำหรับการจัดการผลลัพธ์จากเครื่องมือวิเคราะห์รหัส (เช่นคำเตือนคอมไพเลอร์, การวิเคราะห์แบบคงที่, linters, ฯลฯ )
ปัจจุบันมีตัวแยกวิเคราะห์สำหรับผลลัพธ์ของ GCC, Clang-Analyzer, CPPCHECK และ FindBugs ตัวแยกวิเคราะห์เหล่านี้แปลงผลลัพธ์เป็นรูปแบบข้อมูลทั่วไปของวัตถุ Python ด้วยวิธีการสำหรับการวิ่งกลับที่ไม่มีการสูญเสียผ่านรูปแบบ XML ที่ให้ไว้ นอกจากนี้ยังมี JSON เทียบเท่า
Firehose เป็นซอฟต์แวร์ฟรีที่ได้รับอนุญาตภายใต้ LGPLV2.1 หรือ (ที่ตัวเลือกของคุณ) รุ่นใหม่ ๆ
ต้องใช้ Python 2.7 หรือ 3.2 เป็นต้นไปและได้รับการทดสอบด้วย Pypy สำเร็จ
ปัจจุบันเป็นคุณภาพของอัลฟ่า
รูปแบบ API และการทำให้เป็นอนุกรมยังไม่ได้ตั้งอยู่ในหิน (และเรากระตือรือร้นที่จะรับฟังความคิดเห็นก่อนที่เราจะล็อคสิ่งต่าง ๆ มากขึ้น)
แรงจูงใจ: http://lists.fedoraproject.org/pipermail/devel/2012-december/175232.html
ฉันต้องการลดผลลัพธ์จากการวิเคราะห์รหัสแบบคงที่ลงในฐานข้อมูลซึ่งหมายถึงการบีบบังคับผลลัพธ์ทั้งหมดในรูปแบบการแลกเปลี่ยนทั่วไปบางรูปแบบชื่อรหัส "Firehose" (ซึ่งอาจเป็นชื่อของฐานข้อมูล)
ร่วมกับ Python API แบบง่ายสำหรับการทำงานกับรูปแบบเป็นคอลเลกชันของวัตถุ Python (การสร้างเขียนถึง XML อ่านจาก XML การปรับเปลี่ยน ฯลฯ )
ตอนแรกฉันพิจารณาใช้ JSON แต่ไปกับ XML เพราะถ้าเครื่องมือหลายอย่างกำลังจะปล่อยสิ่งนี้มันก็เป็นการดีที่จะสามารถตรวจสอบสิ่งต่าง ๆ กับสคี
การอ้างอิงไปยังไฟล์ต้นฉบับในรูปแบบอาจรวมแฮชของไฟล์ต้นฉบับเอง (เช่น SHA-1) เพื่อให้คุณสามารถระบุไฟล์ต้นฉบับที่คุณกำลังพูดถึงได้โดยเฉพาะ
รูปแบบนี้จะถูก slurped ใน db สำหรับเว็บ UI และสามารถทำสิ่งอื่น ๆ ได้โดยไม่จำเป็นต้องใช้เซิร์ฟเวอร์: เช่น:
- แปลงเป็นรูปแบบข้อความของข้อผิดพลาดในการรวบรวม GCC เพื่อให้ emacs ฯลฯ สามารถแยกวิเคราะห์และนำคุณไปยังแหล่งที่มา
- กลายเป็นรายงาน HTML ที่เรียบง่ายในท้องถิ่นบนเวิร์กสเตชันของคุณ
โครงการที่ใช้ Firehose:
- Mock-with-analysis สามารถสร้าง RPM แหล่งที่มาใหม่โดยจับผลลัพธ์ของเครื่องมือวิเคราะห์รหัสที่แตกต่างกัน 4 ตัวในรูปแบบ Firehose (พร้อมกับไฟล์ต้นฉบับทั้งหมดที่กล่าวถึงในรายงานใด ๆ )
- สาขา "Firehose" ของ Cpychecker สามารถปล่อยรายงาน Firehose XML ได้โดยปกติ
- https://github.com/paultag/storz/blob/master/wrappers/storz-lintian