JavaDocImpl.comment() throws on a javadoc containing a literal {n}
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
Línea de trabajo
Empieza con JavaDocImpl.comment() en maddi-cst-impl/src/main/java/io/codelaser/maddi/cst/impl/element/JavaDocImpl.java y sigue cómo se almacenan y expanden los marcadores de posición de las etiquetas inline. Reproduce el caso con el ejemplo {0}={1} que contiene {@code key}; se considera resuelto cuando las secuencias literales permanecen sin cambios, los marcadores de posición del parser se expanden correctamente y un índice fuera de rango no lanza una excepción.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
JavaDocImpl.comment() expands {n} in the stored text as a placeholder for inline tag n. Literal text of that form in the javadoc itself gets the same treatment. When n is not a valid tag index, comment() throws.
Where: maddi-cst-impl/src/main/java/io/codelaser/maddi/cst/impl/element/JavaDocImpl.java, comment():
Pattern p = Pattern.compile("\\{(\\d+)}");
Matcher m = p.matcher(super.comment());
while (m.find()) {
int tagIndex = Integer.parseInt(m.group(1));
Tag tag = tags.get(tagIndex); // IndexOutOfBoundsException
...
Seen as:
java.lang.IndexOutOfBoundsException: Index: 1 Size: 1
at java.base/java.util.ImmutableCollections$List12.get(ImmutableCollections.java:611)
at io.codelaser.maddi.cst.impl.element.JavaDocImpl.comment(JavaDocImpl.java:189)
This happened while parsing an open-source project (nacos) and calling comment() on each type's comments.
Minimal shape: a javadoc that contains a MessageFormat-style pattern and at least one inline tag, for example:
/**
* Formats {@code key} as "{0}={1}".
*/
The stored text holds {0} for {@code key}, so tag 0 exists. The literal {0} and {1} are then taken as placeholders too. {1} is out of range and throws. {0} is silently replaced by the wrong tag.
Expected: comment() returns the javadoc text as written. Literal {n} sequences are kept, and only the parser's own placeholders are expanded.
Possible fixes:
- Escape literal
{(or{n}) when the placeholders are created, and unescape incomment(). - Use a placeholder form that cannot occur in source text, such as one with a private-use character.
Either way, out-of-range indices should not throw.
Workaround for callers: commentWithPlaceholders() returns the stored text without expansion. That is enough for checks that only look for words in the comment.
- Lenguaje dominante
- Java
- Estrellas
- 1
- Forks
- 1
- Merge medio
- 1 h 34 min
- PR fusionados (30 d)
- 7
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una 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 CodeLaser/maddi
-
build/ci good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
CodeLaser/maddi#165 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 40/100
CodeLaser/maddi#164 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
-
C# printer: a self-bounded interface's wildcard interface and companion class share a name (CS0102)Abiertofront-end:csharp
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
CodeLaser/maddi#160 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de CodeLaser/maddi
Issues similares
-
dev/release: verify-release-candidate.sh runs 0 Java tests with Debian's MavenPosiblemente ocupada @kou la tomó hoy. AbiertoType: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/arrow-adbc#4947 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
checkstyle/checkstyle#22153 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
Documentation Needs Triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
frankframework/frankframework#11908 ·
Los mantenedores suelen responder en 1 día