เริ่มต้นใช้งานปัญหา GitHub
ปัญหา GitHub เป็นระบบติดตามในตัวสําหรับงาน ข้อบกพร่อง และคําขอคุณลักษณะในที่เก็บ GitHub ก่อนที่คุณจะสามารถแก้ไขปัญหาโดยใช้ GitHub Copilot ได้อย่างมีประสิทธิภาพ คุณจําเป็นต้องเข้าใจวิธีการทํางานกับปัญหา GitHub อย่างมีประสิทธิภาพ
ปัญหา GitHub คืออะไร?
ปัญหา GitHub มีพื้นที่ทํางานร่วมกันที่ทีมติดตามรายการงาน ปัญหาเอกสาร และการปรับปรุงแผน แต่ละปัญหาทําหน้าที่เป็นตั๋วในระบบติดตาม – สามารถมอบหมายให้กับสมาชิกในทีม จัดหมวดหมู่ด้วยป้ายกํากับ เชื่อมโยงกับการเปลี่ยนแปลงโค้ด และเสริมด้วยการสนทนาและเอกสารประกอบ
คิดว่า GitHub Issues เป็นรายการ to-do อัจฉริยะของทีม แต่ละรายการมีการอภิปราย การอ้างอิงโค้ด และข้อมูลเมตาเพื่อให้แน่ใจว่างานจะไม่ตกหล่น สําหรับงานที่เน้นความปลอดภัย GitHub Issues ให้การมองเห็นและการตรวจสอบย้อนกลับที่ช่วยให้ทีมตอบสนองต่อช่องโหว่อย่างเป็นระบบ
องค์ประกอบหลักของปัญหา
การทําความเข้าใจโครงสร้างของปัญหา GitHub ช่วยให้คุณอ่าน จัดการ และแก้ไขได้อย่างมีประสิทธิภาพ
Title
ชื่อเรื่องควรเป็นบทสรุปที่กระชับและอธิบายปัญหา ชื่อที่ดีช่วยให้สมาชิกในทีมเข้าใจปัญหาได้อย่างรวดเร็ว
ตัวอย่างของชื่อประเด็นที่มีผลบังคับใช้:
- "ช่องโหว่การแทรก SQL ในปลายทางการค้นหาผลิตภัณฑ์"
- "การเข้ารหัสที่อ่อนแอในการจัดเก็บรหัสผ่านของผู้ใช้"
- "ความเสี่ยงในการข้ามเส้นทางในฟังก์ชันการอัปโหลดไฟล์"
ชื่อที่เขียนอย่างดีจะสื่อสารทั้งประเภทของปัญหา (ช่องโหว่ด้านความปลอดภัย) และตําแหน่ง (ปลายทางการค้นหาผลิตภัณฑ์) ในทันที
คำอธิบาย
คําอธิบายคือที่ที่รายละเอียดอยู่ คําอธิบายปัญหาที่ครอบคลุมควรมีข้อมูลต่อไปนี้:
- สิ่งที่เกิดขึ้น: คําอธิบายที่ชัดเจนเกี่ยวกับปัญหาหรือข้อกําหนด
- ขั้นตอนในการทําซ้ํา: สําหรับข้อบกพร่อง การดําเนินการเฉพาะที่ทําให้เกิดปัญหา
- พฤติกรรมที่คาดหวัง: ควรเกิดอะไรขึ้นแทน?
- เหตุใดจึงสําคัญ: ความสําคัญของการแก้ไขปัญหานี้
- เกณฑ์การยอมรับ: วิธีตรวจสอบเมื่อปัญหาได้รับการแก้ไขแล้ว
ต่อไปนี้คือตัวอย่างคําอธิบายปัญหาด้านความปลอดภัยที่มีโครงสร้างที่ดี
The login authentication function stores user passwords in plaintext in the database.
**Current behavior:**
Passwords are stored directly as strings without hashing or encryption.
**Security impact:**
If the database is compromised, all user passwords are immediately exposed.
**Expected behavior:**
Passwords should be hashed using a secure algorithm (like bcrypt) with appropriate salt before storage.
**Acceptance criteria:**
- Implement bcrypt password hashing.
- Verify no plaintext passwords exist in storage.
- Update authentication to validate against hashed passwords.
ปัญหาที่เขียนอย่างดีได้รับการแก้ไขไปครึ่งหนึ่ง มันแนะนํานักพัฒนาโดยตรงไปยังปัญหาโดยไม่คลุมเครือ
ความคิดเห็น
ส่วนความคิดเห็นช่วยให้สามารถอภิปรายเป็นทีมได้ สมาชิกในทีมสามารถ:
- ถามคําถามที่ชี้แจง
- เสนอวิธีแก้ปัญหาที่เป็นไปได้
- แบ่งปันผลการสืบสวน
- อ้างอิงรหัสหรือปัญหาที่เกี่ยวข้อง
- บันทึกการตัดสินใจระหว่างการแก้ปัญหา
ความคิดเห็นสร้างเส้นทางความรู้ที่ช่วยให้นักพัฒนาในปัจจุบันและอนาคตเข้าใจทั้งปัญหาและเหตุผลเบื้องหลังการแก้ปัญหา
ผู้รับมอบหมาย
ผู้รับมอบหมายคือบุคคลที่รับผิดชอบในการแก้ไขปัญหา การมีเจ้าของที่ชัดเจนช่วยให้มั่นใจได้ถึงความรับผิดชอบและป้องกันไม่ให้ปัญหาอิดโรยในงานค้าง
แนวทางปฏิบัติแนะนํา: กําหนดเจ้าของหลักหนึ่งรายสําหรับปัญหาเสมอ หากคุณเป็นผู้รับมอบหมาย คุณมีหน้าที่รับผิดชอบในการขับเคลื่อนไปสู่การแก้ไขปัญหา การเป็นผู้รับมอบหมายไม่ได้หมายความว่าคุณทํางานคนเดียว – คุณสามารถทํางานร่วมกับผู้อื่นได้ – แต่คุณเป็นเจ้าของผลลัพธ์
Labels
ป้ายกํากับจัดหมวดหมู่และจัดลําดับความสําคัญของปัญหา ป้ายกํากับทั่วไป ได้แก่ :
- ป้ายกํากับประเภท: ข้อบกพร่อง, การปรับปรุง, เอกสารประกอบ, ความปลอดภัย
- ป้ายลําดับความสําคัญ: P0-critical, P1-high, P2-medium, P3-low
- ป้ายสถานะ: อยู่ระหว่างดําเนินการ ถูกบล็อก ต้องตรวจสอบความต้องการ
- ป้ายกํากับส่วนประกอบ: แบ็กเอนด์, ฟรอนต์เอนด์, API, ฐานข้อมูล
ป้ายชื่อสามารถใช้เพื่อกรองและเรียงลําดับปัญหาในรายการ ทําให้ง่ายต่อการมุ่งเน้นไปที่งานที่มีลําดับความสําคัญสูงหรืองานที่เกี่ยวข้องกับความปลอดภัย
สําหรับปัญหาด้านความปลอดภัย ป้ายกํากับจะช่วยให้ทีมกรองและจัดลําดับความสําคัญของช่องโหว่ที่ต้องให้ความสนใจในทันทีได้อย่างรวดเร็ว ฉลาก ความปลอดภัย รวมกับวิ กฤต P0 ส่งสัญญาณว่าปัญหานี้ต้องดําเนินการอย่างเร่งด่วน
หลักเป้าหมาย
เหตุการณ์สําคัญจัดกลุ่มประเด็นที่เกี่ยวข้องไปสู่เป้าหมายร่วมกัน ตัวอย่างเช่น รุ่นที่นําออกใช้หรือเฟสโครงการ แม้ว่าจะไม่สําคัญต่อการแก้ไขปัญหาของแต่ละบุคคล แต่เหตุการณ์สําคัญจะช่วยให้ทีมประสานงานและติดตามความคืบหน้าไปสู่วัตถุประสงค์ที่ใหญ่ขึ้น
ตรวจสอบวงจรชีวิตของปัญหา
ปัญหาต้องผ่านหลายขั้นตอนตั้งแต่การสร้างไปจนถึงการแก้ไข การทําความเข้าใจวงจรชีวิตนี้จะช่วยให้คุณจัดการปัญหาได้อย่างมีประสิทธิภาพ
ขั้นตอนที่ 1: การสร้าง
นักพัฒนา ผู้ทดสอบ หรือผู้ใช้ที่ระบุปัญหาหรือโอกาสในการปรับปรุงสามารถสร้างปัญหาได้ ปัญหาด้านความปลอดภัยอาจถูกค้นพบผ่านทาง:
- บทวิจารณ์รหัส
- การสแกนความปลอดภัยอัตโนมัติ
- กําลังทดสอบการเจาะ
- รายงานผู้ใช้
- การตรวจสอบความปลอดภัย
เมื่อสร้างปัญหา ให้ระบุบริบทและเกณฑ์การยอมรับที่เพียงพอ สิ่งนี้กําหนดความคาดหวังที่ชัดเจนว่าเมื่อปัญหาได้รับการพิจารณาว่าได้รับการแก้ไขแล้ว
ขั้นตอนที่ 2: การคัดกรอง
ในระหว่างการคัดกรอง หัวหน้าทีมหรือบุคคลที่ได้รับมอบหมาย:
- ตรวจสอบปัญหาใหม่
- กําหนดระดับความสําคัญ
- เพิ่มป้ายกํากับที่เหมาะสม
- มอบหมายปัญหาให้กับนักพัฒนา
- ลิงก์ปัญหาหรือเอกสารประกอบที่เกี่ยวข้อง
ปัญหาที่มีความรุนแรงสูง โดยเฉพาะช่องโหว่ด้านความปลอดภัย จะถูกตั้งค่าสถานะให้ความสนใจทันที ปัญหาด้านความปลอดภัยไม่ควรอยู่ในงานค้างโดยไม่มีการประเมิน
ขั้นตอนที่ 3: การสืบสวนและการอภิปราย
นักพัฒนาที่ได้รับมอบหมายจะตรวจสอบปัญหา นักพัฒนาแอปสามารถทํางานต่อไปนี้อย่างน้อย 1 อย่างในระหว่างการตรวจสอบ
- ถามคําถามที่ชี้แจงในความคิดเห็น
- เอกสารผลการวิจัยจากการวิเคราะห์โค้ด
- เสนอวิธีแก้ปัญหาที่เป็นไปได้
- ขอข้อมูลเพิ่มเติม
- ระบุพื้นที่โค้ดที่เกี่ยวข้องที่ได้รับผลกระทบ
ขั้นตอนการอภิปรายนี้ช่วยให้มั่นใจได้ว่าทุกคนเข้าใจปัญหาก่อนที่จะดําเนินการแก้ไข
ขั้นตอนที่ 4: การใช้งาน
นักพัฒนาสร้างสาขาคุณลักษณะและใช้การแก้ไข กระบวนการนําไปใช้โดยทั่วไปเกี่ยวข้องกับงานต่อไปนี้:
- การเขียนหรือแก้ไขโค้ด
- การเพิ่มหรืออัปเดตการทดสอบ
- การตรวจสอบการแก้ไขภายในเครื่อง
- การเตรียมคําขอดึงข้อมูล (PR)
ขั้นตอนที่ 5: การเชื่อมโยงการคอมมิตและคําขอดึงข้อมูล
GitHub จะเชื่อมต่อปัญหากับการเปลี่ยนแปลงโค้ดโดยอัตโนมัติเมื่อคุณอ้างอิงในข้อความคอมมิตหรือคําอธิบาย PR โดยใช้คําหลัก:
Fixes #123Closes #123Resolves #123
ตัวอย่างข้อความคอมมิต:
Fix SQL injection vulnerability in search function
Implement parameterized queries to prevent SQL injection attacks.
Add input validation for search parameters.
Fixes #42
การใช้คําหลักเพื่ออ้างอิงปัญหาจะสร้างการตรวจสอบย้อนกลับระหว่างปัญหาและวิธีแก้ไข เมื่อผสาน PR GitHub จะปิดปัญหาที่อ้างอิงโดยอัตโนมัติ ระบบอัตโนมัตินี้ช่วยให้แน่ใจว่าปัญหาจะไม่ยังคงเปิดอยู่หลังจากได้รับการแก้ไขแล้ว และสร้างลิงก์ถาวรระหว่างคําอธิบายปัญหาและการเปลี่ยนแปลงโค้ดที่แก้ไขได้
ขั้นตอนที่ 6: การปิดและการตรวจสอบ
เมื่อรวม PR ปัญหาจะปิดโดยอัตโนมัติ (หากมีการอ้างอิงอย่างถูกต้อง) หากการทดสอบพบว่าปัญหายังไม่ได้รับการแก้ไขอย่างสมบูรณ์ ก็สามารถเปิดใหม่เพื่อทํางานเพิ่มเติมได้
แนวทางปฏิบัติที่ดีที่สุด: หลังจากปิด ให้ตรวจสอบว่าตรงตามเกณฑ์การยอมรับในคําอธิบายปัญหาเดิม สําหรับปัญหาด้านความปลอดภัย ให้พิจารณาการตรวจสอบเพิ่มเติมผ่านการทดสอบความปลอดภัย
จัดการปัญหา GitHub ใน Visual Studio Code
Visual Studio Code ผสานรวมโดยตรงกับปัญหา GitHub ผ่านส่วนขยายคําขอดึงข้อมูล GitHub การผสานการทํางานนี้ช่วยให้คุณ:
- ดูปัญหาที่ได้รับมอบหมายโดยไม่ต้องออกจากตัวแก้ไข
- สร้างปัญหาใหม่จากภายใน Visual Studio Code
- ลิงก์การเปลี่ยนแปลงโค้ดกับปัญหาขณะทํางาน
- ตรวจสอบรายละเอียดปัญหาควบคู่ไปกับโค้ดของคุณ
ในการเข้าถึงปัญหา GitHub ใน Visual Studio Code:
- ติดตั้งส่วนขยาย "GitHub Pull Requests and Issues"
- ลงชื่อเข้าใช้ด้วยบัญชี GitHub ของคุณ
- ดูปัญหาในแผง GitHub
- กรองตามผู้รับมอบหมาย ป้ายชื่อ หรือเหตุการณ์สําคัญ
การผสานรวมที่แน่นแฟ้นนี้ช่วยเพิ่มความคล่องตัวให้กับเวิร์กโฟลว์ของคุณโดยทําให้บริบทของปัญหามองเห็นได้ในขณะที่คุณเขียนโค้ด
เหตุใดการจัดการปัญหาที่มีประสิทธิภาพจึงมีความสําคัญ
การติดตามปัญหาที่ชัดเจนช่วยป้องกันไม่ให้ปัญหาร้ายแรงหลุดลอยไป โดยเฉพาะอย่างยิ่งในด้านความปลอดภัย พิจารณาสถานการณ์ในโลกแห่งความเป็นจริงเหล่านี้:
ปัญหาเล็กน้อยกลายเป็นเหตุการณ์สําคัญ: ปัญหาด้านความปลอดภัยที่ "ดูเล็กน้อย" ในงานค้างอาจกลายเป็นเหตุการณ์ร้ายแรงได้หากผู้โจมตีค้นพบก่อน ปัญหาด้านความปลอดภัยใน GitHub Issues สามารถมองเห็นได้และตรวจสอบย้อนกลับได้ – ใช้การมองเห็นนั้นเป็นเครื่องมือความรับผิดชอบ
ความรู้ของสถาบันที่สูญหาย: เมื่อปัญหาได้รับการบันทึกไว้ไม่ดีหรือการอภิปรายเกิดขึ้นนอกระบบการติดตามบริบทอันมีค่าจะหายไป นักพัฒนาในอนาคต (รวมถึงคุณในอีก 6 เดือน) อาจไม่เข้าใจว่าเหตุใดจึงมีการตัดสินใจบางอย่าง
การตอบกลับล่าช้า: หากไม่มีป้ายกํากับลําดับความสําคัญและผู้รับมอบหมายที่ชัดเจนช่องโหว่ด้านความปลอดภัยที่สําคัญอาจไม่ได้รับความสนใจอย่างทันท่วงที
ยอมรับการพัฒนาที่ขับเคลื่อนด้วยปัญหา: ระบุปัญหา แก้ไข ตรวจสอบการแก้ไข ปิดปัญหา และดําเนินการต่อ วิธีการที่เป็นระบบนี้ช่วยให้มั่นใจได้ถึงความสมบูรณ์และสร้างความมั่นใจในฐานรหัสของคุณ
Summary
ปัญหา GitHub เป็นรากฐานสําหรับการแก้ปัญหาอย่างเป็นระบบในการพัฒนาซอฟต์แวร์ การทําความเข้าใจวิธีอ่าน ตีความ และจัดการปัญหาอย่างมีประสิทธิภาพเป็นสิ่งสําคัญก่อนที่คุณจะสามารถแก้ไขได้อย่างมีประสิทธิภาพ