unseen: stop reading files once every file is withheld
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 86/100
- Tipo de issue
- Refactorización
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- go
- Área
- devtools, performance
Línea de trabajo
Empieza en internal/subject.go:375 y sigue cómo unseen procesa las entradas de directorio; después revisa ignore.go:177, rename.go:158 y surplus.go:228 para confirmar sus all checks. Se considera terminado cuando unseen deja de procesar una vez que all está establecido y usa la opción del parser descrita en el issue, sin cambiar el comportamiento de reader.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
unseen (internal/subject.go:375) keeps reading and parsing files after it has set u.all = true. At that point the answer is already final. Every reader checks u.all first and ignores u.names.
Current shape
for _, e := range entries {
...
if strings.HasSuffix(e.Name(), "_test.go") {
u.all = true
continue // keeps going through the rest of the directory
}
if f, err = parser.ParseFile(fset, p, nil, 0); err != nil { // full parse
u.all = true
continue
}
ast.Inspect(f, func(n ast.Node) bool { // collects names nobody will read
if id, ok := n.(*ast.Ident); ok {
u.names[id.Name] = true
}
return true
})
}
The readers:
| Reader | What it does with all |
|---|---|
ignore.go:177 |
Returns when all is set |
rename.go:158 |
Returns false when all is set |
surplus.go:228 surplusSeesEveryFile |
Returns false when all is set, before it reads names |
Why the change helps
In the ordinary variant of a package with tests, the directory holds _test.go files the pass does not see. The first one sets u.all. The loop then fully parses, and walks, every build-excluded file left in the directory. ignore.go:177 calls unseen under the default strict unused mode, so nearly every package pays for this.
for _, e := range entries {
if u.all {
break // the answer cannot change
}
...
if f, err = parser.ParseFile(fset, p, nil, parser.SkipObjectResolution); err != nil {
...
}
}
parser.SkipObjectResolution skips building the deprecated ast.Object scopes. unseen only reads ident.Name, so it does not need them.
Risk
None, since every reader checks .all first.
Not measured yet.
- Lenguaje dominante
- Go
- Estrellas
- 18
- Forks
- 0
- Merge medio
- 59 min
- PR fusionados (30 d)
- 85
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mpyw/declscope
-
Inflections are generated in one direction, so an inflected file name is never carried by its stemAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de mpyw/declscope
Issues similares
-
automation models
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
txn2/mcp-data-platform#1984 ·
Los mantenedores suelen responder en 1 día
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Fix broken Code of Conduct linksAbiertokind/docs prio/P2
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
agent-substrate/substrate#1986 ·
Los mantenedores suelen responder en 1 día