github / github/codeql

Java: Generic Class Methods not connected when type parameter is unknown (build-mode=none)

Aperta
#19,538 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
question
Lingua principale
CodeQL
Stelle
10.1k
Fork
2.1k
Merge medio
2g 15h
PR unite (30g)
141

Descrizione

The introduction of `build-mode=none` has been very helpful for us. This allows us to create (partial) CodeQL databases, without being forced to fully resolve (maven) dependencies. Sometimes this is convenient because some dependencies might not be easily resolvable.

That said, we also see many examples of Generic Classes and Methods in our codebases. Unfortunately, we cannot analyse (calls to) Generic Methods that are instantiated with type parameters that are unknown.

Note that, while the code of the type parameter `T` is unavailable, the code of the `GenericClass` *is* available.

## Example pseudo code
```
class GenericClass {
public method() { ... };
};

GenericClass i1 = new GenericClass<>();
i1.method(); // not connected
GenericClass i2 = new GenericClass<>();
i2.method(); // connected
```

See attached [codeql_issue.zip](https://github.com/user-attachments/files/20345107/codeql_issue.zip) zip file for a more thorough analysis of the issue.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Start by unpacking the attached codeql_issue.zip and comparing the connected Boolean instantiation with the unconnected unknown-type instantiation under build-mode=none. The issue names no source files or tests, so trace the relevant Java analysis entry point from the reproduction. Done means calls to GenericClass.method() are connected like calls with a known type parameter.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.