Hook

กำหนดค่า hook: เลือกสิ่งที่จะสแกน

เลือกว่า hook ที่สแกนไฟล์จะข้ามอะไรบ้าง ใช้กับทุก hook หรือเฉพาะ hook เดียวก็ได้

บล็อก checkers ใน .lagune/configs.json กำหนดว่า hook ที่สแกนไฟล์จะข้ามอะไรบ้าง ใช้กับทุก hook หรือเฉพาะ hook เดียวก็ได้

วิธีกำหนดค่า​

เพิ่มหรือลบ path และรูปแบบได้จากบรรทัดคำสั่ง โดยครอบรูปแบบด้วยเครื่องหมายคำพูดเพื่อให้ shell คงรูปแบบนั้นไว้ตามที่เขียน:

npx lagune write add --ignore test/fixtures
npx lagune write add --ignore 'packages/*/dist' --checker secrets
npx lagune write remove --ignore test/fixtures

หรือเลือกได้ในหน้า Settings ของ แดชบอร์ด หรือกำหนดไว้ในไฟล์โดยตรง:

{
"checkers": {
"ignore": ["test/fixtures"],
"secrets": { "gitignore": false, "ignore": ["test/fixtures", "temp"] }
}
}

การตั้งค่า​

คีย์ค่าค่าเริ่มต้นคำอธิบาย
gitignoretrue หรือ falsetrueข้ามสิ่งที่ Git ละเว้นไว้ แต่ยังสแกนไฟล์ที่ Git ติดตามอยู่เสมอ
ignorepath หรือรูปแบบที่นับจาก root ของโปรเจกต์[]ข้ามสิ่งที่ตรงกับแต่ละรายการและทุกอย่างที่อยู่ภายใต้รายการนั้น แม้เป็นไฟล์ที่ Git ติดตามอยู่ก็ตาม

คีย์ที่ระดับบนสุดของ checkers ใช้กับทุกตัวตรวจ ส่วนคีย์ที่อยู่ใต้ชื่อตัวตรวจใดจะใช้กับตัวตรวจนั้นเท่านั้นและแทนที่คีย์ที่ใช้ร่วมกัน ในตัวอย่างนี้ secrets จึงสแกนสิ่งที่ Git ละเว้นไว้ และข้าม test/fixtures กับ temp เมื่อ write add --ignore สร้างรายการแรกให้ตัวตรวจใดเป็นของตัวเอง รายการนั้นจะเริ่มจากสำเนาของรายการที่ใช้ร่วมกัน

รูปแบบ​

รูปแบบเริ่มนับจาก root ของโปรเจกต์ ดังนั้น *.generated.ts จะครอบคลุมเฉพาะไฟล์ที่อยู่ตรงนั้น ส่วน **/*.generated.ts ครอบคลุมไฟล์เหล่านั้นในทุกระดับความลึก ชื่อต้องตรงกันทุกตัวอักษร รวมถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

รูปแบบสิ่งที่ข้าม
distdist ที่ root ของโปรเจกต์
packages/*/distdist ในทุกโฟลเดอร์ภายใต้ packages
**/distdist ทุกตัวในทุกระดับความลึก
**/*.generated.tsทุกไฟล์ที่ชื่อลงท้ายด้วย .generated.ts
fixture-?fixture-a, fixture-1 และชื่อทำนองเดียวกัน
[ab]-cachea-cache และ b-cache
[*]x*x โดยถือ * เป็นอักขระธรรมดา

วิธีอ่านผลลัพธ์​

ท้ายรายงานจะบอกจำนวน path ที่การสแกนข้ามไป แยกตามสิ่งที่ละเว้น path เหล่านั้น:

Skipped 25 paths that Git ignores and 3 paths that .lagune/configs.json ignores. Name one with --dir or --file to scan it.

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

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

ไม่ เฟส charter จะแสดงรายการโฟลเดอร์ที่ commit ไว้ซึ่งผลการอ่านโปรเจกต์ชี้ว่าไม่ใช่โค้ดที่คุณต้องป้องกัน เช่น fixture สำหรับการทดสอบที่จงใจเขียนให้ดูมีช่องโหว่ แล้วบันทึกเฉพาะโฟลเดอร์ที่คุณเลือกตามหมายเลขเท่านั้น

เมื่อ repository นั้นไม่ใช่ของที่คุณไว้ใจได้ เพราะไฟล์ .gitignore ภายใน repository อาจซ่อนโค้ดไว้ หรือเมื่อโฟลเดอร์ build อาจมีคีย์ที่ฝังเข้าไปตอน build ตั้ง gitignore เป็น false ได้ทั้งกับทุก checker หรือเฉพาะ checker เดียว