Regression: scan.Run is a 248-line function in the engine's most-changed file
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Start with Run in internal/scan/runner.go (lines 556-803) and the deferred "done not sent" closure at lines 596-601, then trace each early return. Before moving any code, add or confirm tests in go test ./internal/scan/ that each early exit (scope refusal, recursion ceiling, preflight failure, wildcard without force, cancellation during preflight) emits exactly one done event. Done means those tests pass and the preflight extraction is a pure move with no behaviour change.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
scan.Run is a 248-line function in the engine's most-changed file. A few other functions are past 100 lines. The configured linters (no funlen or gocyclo) do not flag any of them.
Where
internal/scan/runner.go:556-803(Run): it does limiter setup, scope refusal, recursion ceiling, resolver preflight, wildcard detection, wiring for the ticker, dispatcher and workers, retry pass, and the final snapshot. Every early return depends on the deferred "done not sent" closure at:596-601.runner.gohas 1,064 lines (the largest Go file), and 44 of the last 500 commits touched it.- Counters mix raw
*int64withatomic.LoadInt64(processed, found, total) andatomic.Int64(queriesSent). - Other hotspots:
internal/tui/form.go:366validate: 116 linespkg/subenum/subenum.go:563options: 114 linesmain_session.go:602scanOneTarget: 95 lines
Why it hurts now
Every new preflight feature (AXFR, pools, auto-rate, deadline) landed inside Run. The phase order and the "exactly one done event" contract (#99, #23) are easy to break with each edit.
Plan
- Tests first: confirm that each early exit (scope refusal, ceiling refusal, preflight failure, wildcard without force, cancellation during preflight) emits exactly one done event. Add any that are missing.
- Extract
preflight(ctx, &cfg, events) (wildcardRoot bool, fp *fingerprint, ok bool)as a pure move. - Extract
startTickerandstartWorkers. - Move
processed,foundandtotaltoatomic.Int64fields onscanState. - Consider enabling
funlenwith a generous limit, to stop new 200-line functions.
#159 lifted the dispatcher out of scan.Run and was closed. Since then, preflight, wildcard, retry, pool and deadline work has grown Run back to 248 lines.
Getting started
- Relevant files:
internal/scan/runner.go - How to run tests:
go test ./internal/scan/(lint withgolangci-lint run ./...) - Related docs:
docs/ARCHITECTURE.md
Filed by repo-audit/full-audit at 3f671b2. Severity: medium. Effort: M. audit-key: tech-debt|internal/scan/runner.go|Run
- Linguagem predominante
- Go
- Estrelas
- 1
- Forks
- 1
- Merge médio
- 7h 48min
- PRs com merge (30d)
- 6
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TMHSDigital/subenum
-
enhancement good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
TMHSDigital/subenum#275 ·
Mantenedores costumam responder em até 1 dia
-
good first issue severity: low testing
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
TMHSDigital/subenum#260 ·
Mantenedores costumam responder em até 1 dia
-
community documentation good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
TMHSDigital/subenum#135 ·
Mantenedores costumam responder em até 1 dia
-
enhancement help wanted severity: medium
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
TMHSDigital/subenum#274 ·
Mantenedores costumam responder em até 1 dia
-
enhancement help wanted severity: medium
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
TMHSDigital/subenum#273 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de TMHSDigital/subenum
Issues semelhantes
-
area: interop area: sip-core v3
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
fonoster/routr#705 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
deadfin-org/deadfin#35 ·
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
enhancement priority: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
labmonkeys-space/nl6#1037 ·
Mantenedores costumam responder em até 1 dia
-
Setup Guide Go tab: say it needs Go 1.26 (the unversioned go get pulls OpenTelemetry Go v1.47.0)Abertaenhancement follow-up
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia