เริ่มต้นใช้งานปัญหา 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 #123
  • Closes #123
  • Resolves #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:

  1. ติดตั้งส่วนขยาย "GitHub Pull Requests and Issues"
  2. ลงชื่อเข้าใช้ด้วยบัญชี GitHub ของคุณ
  3. ดูปัญหาในแผง GitHub
  4. กรองตามผู้รับมอบหมาย ป้ายชื่อ หรือเหตุการณ์สําคัญ

การผสานรวมที่แน่นแฟ้นนี้ช่วยเพิ่มความคล่องตัวให้กับเวิร์กโฟลว์ของคุณโดยทําให้บริบทของปัญหามองเห็นได้ในขณะที่คุณเขียนโค้ด

เหตุใดการจัดการปัญหาที่มีประสิทธิภาพจึงมีความสําคัญ

การติดตามปัญหาที่ชัดเจนช่วยป้องกันไม่ให้ปัญหาร้ายแรงหลุดลอยไป โดยเฉพาะอย่างยิ่งในด้านความปลอดภัย พิจารณาสถานการณ์ในโลกแห่งความเป็นจริงเหล่านี้:

  • ปัญหาเล็กน้อยกลายเป็นเหตุการณ์สําคัญ: ปัญหาด้านความปลอดภัยที่ "ดูเล็กน้อย" ในงานค้างอาจกลายเป็นเหตุการณ์ร้ายแรงได้หากผู้โจมตีค้นพบก่อน ปัญหาด้านความปลอดภัยใน GitHub Issues สามารถมองเห็นได้และตรวจสอบย้อนกลับได้ – ใช้การมองเห็นนั้นเป็นเครื่องมือความรับผิดชอบ

  • ความรู้ของสถาบันที่สูญหาย: เมื่อปัญหาได้รับการบันทึกไว้ไม่ดีหรือการอภิปรายเกิดขึ้นนอกระบบการติดตามบริบทอันมีค่าจะหายไป นักพัฒนาในอนาคต (รวมถึงคุณในอีก 6 เดือน) อาจไม่เข้าใจว่าเหตุใดจึงมีการตัดสินใจบางอย่าง

  • การตอบกลับล่าช้า: หากไม่มีป้ายกํากับลําดับความสําคัญและผู้รับมอบหมายที่ชัดเจนช่องโหว่ด้านความปลอดภัยที่สําคัญอาจไม่ได้รับความสนใจอย่างทันท่วงที

ยอมรับการพัฒนาที่ขับเคลื่อนด้วยปัญหา: ระบุปัญหา แก้ไข ตรวจสอบการแก้ไข ปิดปัญหา และดําเนินการต่อ วิธีการที่เป็นระบบนี้ช่วยให้มั่นใจได้ถึงความสมบูรณ์และสร้างความมั่นใจในฐานรหัสของคุณ

Summary

ปัญหา GitHub เป็นรากฐานสําหรับการแก้ปัญหาอย่างเป็นระบบในการพัฒนาซอฟต์แวร์ การทําความเข้าใจวิธีอ่าน ตีความ และจัดการปัญหาอย่างมีประสิทธิภาพเป็นสิ่งสําคัญก่อนที่คุณจะสามารถแก้ไขได้อย่างมีประสิทธิภาพ