[duplicate-code] Duplicate Code: pull_request event detection duplicated across safe_update files
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
Direzione di ricerca
Leggi pkg/workflow/safe_update_enforcement.go e pkg/workflow/safe_update_manifest.go, quindi segui il chiamante extractPullRequestEventPresenceFromCompiledWorkflow. Consolida il rilevamento duplicato degli eventi e aggiorna i chiamanti affinché usino l’implementazione condivisa. Esegui make fmt e make test-unit; il lavoro è completato quando sia l’applicazione di safe-update sia il rilevamento del manifest continuano a passare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🔍 Duplicate Code Detected: Duplicate pull_request event detection
Analysis of commit 8c2337a
Assignee: @copilot
Summary
extractPullRequestEventPresenceFromOnField and detectPullRequestEvents have byte-for-byte identical bodies (21 normalized lines). Both parse a workflow on: field into (hasPR, hasPRTarget) and both live in the workflow package.
Duplication Details
Pattern: on: field → (pull_request, pull_request_target) presence
- Severity: Medium
- Occurrences: 2
- Locations:
pkg/workflow/safe_update_enforcement.go(lines 131-153,extractPullRequestEventPresenceFromOnField)pkg/workflow/safe_update_manifest.go(lines 182-207,detectPullRequestEvents)
- Code Sample:
func detectPullRequestEvents(onField any) (hasPR bool, hasPRTarget bool) { switch v := onField.(type) { case string: return v == "pull_request", v == "pull_request_target" case []any: for _, item := range v { event, ok := item.(string) if !ok { continue } if event == "pull_request" { hasPR = true } if event == "pull_request_target" { hasPRTarget = true } } case map[string]any: _, hasPR = v["pull_request"] _, hasPRTarget = v["pull_request_target"] } return hasPR, hasPRTarget }
Impact Analysis
- Maintainability: Event-parsing changes must be mirrored across two files.
- Bug Risk: The two copies can diverge, causing inconsistent safe-update enforcement vs manifest detection.
- Code Bloat: ~23 duplicated lines across two files in the same package.
Refactoring Recommendations
- Extract a single shared helper
- Keep one function (e.g.
detectPullRequestEvents) and haveextractPullRequestEventPresenceFromOnFielddelegate to it, or remove the duplicate and update the one caller (extractPullRequestEventPresenceFromCompiledWorkflow). - Estimated effort: ~15 min, low complexity.
- Benefits: single source of truth for
on:event detection.
- Keep one function (e.g.
Implementation Checklist
- Collapse to one implementation and update callers
- Run
make fmtandmake test-unit - Verify safe-update enforcement and manifest detection unaffected
Analysis Metadata
- Analyzed Area:
pkg/non-test.gofiles - Detection Method: normalized function-body hashing + manual verification
- Commit: 8c2337a
Generated by 🔍 Duplicate Code Detector · pi · opus48 · 52.6 AIC · ⌖ 40.5 AIC · ⊞ 1.5K · ◷
- expires on Oct 10, 2026, 1:57 PM UTC-08:00
- Lingua principale
- Go
- Stelle
- 5.4k
- Fork
- 576
- Merge medio
- 8h 11m
- PR unite (30g)
- 798
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/gh-aw
-
automation code-quality cookie documentation improvement quick-win task-mining
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/gh-aw#67262 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
automation code-quality cookie documentation improvement quick-win task-mining
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows automation code-quality cookie improvement quick-win task-mining testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
automation cli cookie documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
automation code-quality cookie improvement quick-win task-mining
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di github/gh-aw
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
duplication
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openvibely/openvibely#1443 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
canonical/service-mesh#845 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
keyxmakerx/Chronicle#1179 ·
I maintainer di solito rispondono entro 1 giorno