
bellybutton เป็นเครื่องยนต์ผ้าสำลีที่ปรับแต่งได้ง่ายและกำหนดค่าได้สำหรับ Python
เครื่องมือเช่น Pylint และ Flake8 จัดเตรียมไว้นอกกรอบกฎที่หลากหลายสำหรับการบังคับใช้แนวทางปฏิบัติที่ดีที่สุดของ Python เพื่อให้มั่นใจว่าการปฏิบัติตาม PEP-8 และหลีกเลี่ยงแหล่งที่มาของข้อบกพร่องบ่อยครั้ง อย่างไรก็ตามหลายโครงการมีผู้สมัครเฉพาะโครงการสำหรับการวิเคราะห์แบบคงที่เช่นคู่มือสไตล์ภายในพื้นที่ของฟังก์ชั่นที่เลิกใช้งานหรือแหล่งที่มาของข้อผิดพลาดทั่วไป นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งโครงการเหล่านั้นที่มีผู้มีส่วนร่วมจำนวนมากหรือมีรหัสฐานขนาดใหญ่หรือเดิม
bellybutton อนุญาตให้ระบุกฎการตัดหญ้าแบบกำหนดเองบนพื้นฐานต่อโครงการและตรวจพบซึ่งเป็นส่วนหนึ่งของกระบวนการสร้างการทดสอบและการปรับใช้ปกติของคุณและยิ่งไปกว่านั้นทำให้การระบุกฎเหล่านี้สามารถเข้าถึงได้อย่างมากลดค่าใช้จ่ายในการยอมรับอย่างมาก
ลองใช้ bellybutton ถ้า:
สามารถติดตั้ง bellybutton ได้ผ่าน:
pip install bellybuttonเมื่อติดตั้งแล้ว
bellybutton init ในไดเรกทอรีรากของโครงการของคุณจะสร้างไฟล์กำหนดค่า .bellybutton.yml พร้อมกฎตัวอย่างเพื่อให้คุณเริ่มปรับตัว bellybutton จะพยายามจัดให้มีการตั้งค่ากฎเพิ่มเติมตามโครงสร้างไดเรกทอรีของโครงการของคุณ
เมื่อคุณกำหนดค่า bellybutton สำหรับโครงการของคุณแล้ว
bellybutton lint จะผ้าสำลีกับกฎที่ระบุไว้ใน .bellybutton.yml ของคุณ นอกจากนี้การวิ่ง
bellybutton lint --modified-only ถ้าใช้ Git เพียงผ้าสำลีที่แตกต่างจาก origin/master
สำหรับการเพิ่ม bellybutton ไปยังไปป์ไลน์ CI ของคุณให้ดูที่การกำหนดค่า TOX ของที่เก็บนี้และ. travis.yml เป็นตัวอย่าง
กฎในรูปแบบการจัดหา bellybutton ที่ควรจับและทำให้ผ้าสำลีล้มเหลว กฎตามที่ระบุในการกำหนดค่า .bellybutton.yml ของคุณจะต้องประกอบด้วย:
description คำอธิบายแสดงความหมายของกฎexpr ระบุรูปแบบที่จะถูกจับ - ไม่ว่าจะเป็นการแสดงออกของ Astpath หรือเป็นการแสดงออกปกติ ( !regex ... ) นอกจากนี้คีย์ที่ใช้สำหรับกฎภายในการแมป rules ทำหน้าที่เป็นชื่อ
กฎอาจประกอบด้วย:
settings ค่าการตั้งค่าที่ระบุไฟล์ที่จะบังคับใช้กฎใดและสามารถละเว้นได้ผ่าน # bb: ignore ความคิดเห็นexample ของรหัส Python ที่จะจับคู่โดยกฎinstead เป็นรหัสทางเลือกอื่น ๆ เพื่อชี้นำนักพัฒนาในการแก้ไขข้อผิดพลาดเกี่ยวกับผ้าสำลีของพวกเขา example เหล่านี้และคำสั่ง instead จะถูกตรวจสอบในเวลาทำงานเพื่อให้แน่ใจว่าพวกเขาตามลำดับและไม่ตรงกับ expr ของกฎ
ตัวอย่างเช่นกฎของผ้าสำลีสำหรับการโทรฟังก์ชั่นที่เลิกใช้โดยใช้นิพจน์ Astpath อาจมีลักษณะ:
DeprecatedFnCall :
description : ` deprecated_fn ` will be deprecated in v9.1.2. Please use `new_fn` instead.
expr : //Call[func/Name/@id='deprecated_fn']
example : " deprecated_fn(*values) "
instead : " new_fn(values) " !settings ค่าโหนดระบุ:
included เส้นทางที่จะต้องใช้กฎโดยใช้สัญลักษณ์ลูกโลกexcluded เส้นทางที่กฎจะไม่ถูกเรียกใช้ (แม้ว่าจะตรงกับเส้นทาง included )allow_ignore ซึ่งกำหนดว่าสามารถละเว้นกฎได้หรือไม่การให้บรรทัดที่ตรงกับกฎมี # bb: ignore ความคิดเห็น นอกจากนี้ที่ระดับรูทของ .bellybutton.yml การตั้งค่า default_settings อาจระบุซึ่งจะถูกใช้โดยกฎโดยไม่มีการตั้งค่าที่ชัดเจน แต่ละกฎจะต้องมีพารามิเตอร์ settings หรือสามารถย้อนกลับไปที่ default_settings
ตัวอย่างเช่น !settings โหนดเป็นผ้าสำลีเฉพาะโมดูลเฉพาะอาจมีลักษณะ:
my_module_settings : !settings
included :
- ~+/my_package/my_module.py
excluded : []
allow_ignore : no ตรวจสอบ .bellybutton.yml ของที่เก็บนี้เป็นตัวอย่างไฟล์การกำหนดค่า bellybutton และ README ของ astpath สำหรับตัวอย่างประเภทของรูปแบบที่คุณสามารถใช้ในการใช้ bellybutton
bellybutton อยู่ในการเปิดตัวอัลฟ่าและเช่นนี้จะขาดคุณสมบัติที่สำคัญบางอย่างเอกสารและการทดสอบเต็มรูปแบบ นอกจากนี้ bellybutton ยังไม่ได้รับการปรับให้เหมาะสมสำหรับประสิทธิภาพบนรหัสฐานขนาดใหญ่มากและอาจมีข้อบกพร่องที่แตกหัก โปรดรายงานข้อบกพร่องใด ๆ ที่พบ
!chain and !verbal