fix(loc): C# drops a declaration under a brace-less for body from lloc
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
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- testing-qa
Línea de trabajo
Empieza por src/metrics/loc/csharp.rs e inspecciona el recorrido de ancestros de local_declaration_statement que omite las declaraciones dentro de un for. Compara su comportamiento con la corrección de la familia JavaScript mencionada en #1283. Añade una prueba de regresión de C# para la entrada reportada con for y switch sin llaves, y luego confirma que lloc es 4 y sigue siendo 4 cuando unas llaves rodean el cuerpo del for.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
A declaration that is the unbraced body of a for, or sits under one with no block between, is dropped from lloc in C#.
Reproduction
Inside class A { void F() { … } }, values are lloc of the unit.
| Input | Expected | Actual |
|---|---|---|
for (int i = 0; i < 2; i++) switch (i) { case 0: int y = 1; break; } |
4 (for, switch, the declaration, break) |
3 |
the same with braces around the for body |
4 | 4 |
Cause
src/metrics/loc/csharp.rs skips a local_declaration_statement whose ancestor walk reaches a for before a block, to keep a for header's declaration from counting as a statement. In tree-sitter-c-sharp 0.23.5 a for initializer is a variable_declaration, never a local_declaration_statement, so the gate cannot fire for a header. It fires only for a declaration in the for body with no block between, where it drops a real statement.
This is the miss #1283 fixed for the JS family (js_family_braceless_for_body_declaration_counts). The same brace-less switch shape in Java also read 3; not investigated further.
Why it is filed from #1736
The escaped mutant replace == with != in <impl Loc for CsharpCode>::compute on that gate differs from the original only on inputs like the first row, where the original undercounts and the mutant reads 4. A test that kills it would pin the wrong value. It stays open on #1736 until this is fixed.
- Lenguaje dominante
- Rust
- Estrellas
- 32
- Forks
- 3
- Merge medio
- 9 h 55 min
- PR fusionados (30 d)
- 102
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 dekobon/big-code-analysis
-
documentation low-priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dekobon/big-code-analysis#1883 ·
Los mantenedores suelen responder en 1 día
-
low-priority performance
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dekobon/big-code-analysis#1879 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
dekobon/big-code-analysis#1458 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
dekobon/big-code-analysis#1444 ·
Los mantenedores suelen responder en 1 día
-
security upstream-grammar
Dificultad 2/5 Menos de una hora Aptitud para principiantes 75/100
dekobon/big-code-analysis#1058 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de dekobon/big-code-analysis
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ElectronicWave/Elemental#252 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
area:mcp effort:low P5 source:agent
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 70/100
jlcodes99/cockpit-tools#3103 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
eliasstravik/herdr-projects#1032 ·