github / github/codeql

Java: Add TypeAccess predicate for finding out if access is fully qualified

Abierto
#3,649 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Java question
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

**Description of the issue**
Would it be possible to add a predicate to `TypeAccess` or create a subclass1, e.g. `ClassOrInterfaceTypeAccess`, with a predicate which allows detecting if the type access is fully qualified, e.g. `List list = new java.util.ArrayList<>();`?

The main use case would be to detect cases where there is no need to fully qualify a type, either because the simple name is already available or because an import could be added.

Though maybe the use case for such a predicate would be too specific and does not justify this?

Note that it is currently possible to find this out in an error-prone way by checking if the length in the source (as reported by `getLocation`) matches the expected simple name length. See a not very well working example implementation [here](https://github.com/Marcono1234/codeql-java-queries/blob/master/not-working/fully-qualified-name-instead-of-simple-name.ql).

----
1: Separate class is probably needed because `TypeAccess` also covers primitives and they are always fully qualified according to [JLS](https://docs.oracle.com/javase/specs/jls/se14/html/jls-6.html#jls-6.7) so adding the predicate to `TypeAccess` would not be that useful because you would always have to check that the type is not a primitive when using that predicate.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.