github / github/codeql

Java: Support `CompileTimeConstantExpr` for constant fields from compiled classes

Aperta
#8,688 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
enhancement Java
Lingua principale
CodeQL
Stelle
10.1k
Fork
2.1k
Merge medio
2g 15h
PR unite (30g)
141

Descrizione

### Discussed in https://github.com/github/codeql/discussions/8650

Originally posted by **Marcono1234** April 2, 2022
When compiled classes have constant fields, source code referencing them uses the constant value. A simple example for this is the following:
```java
class ConstantTest {
static final int VALUE = Integer.MAX_VALUE;
}
```
Compiling this class and inspecting it with `javap -v` shows that the value of `Integer.MAX_VALUE`, that is 2147483647, has been stored in the class file (instead of performing a field read). This is also explicitly mentioned in [JLS 17 §13.4.9](https://docs.oracle.com/javase/specs/jls/se17/html/jls-13.html#jls-13.4.9).

Currently CodeQL's `CompileTimeConstantExpr` does not support this; I assume because the information is missing from the database. Would it be possible to store this information in the database during extraction?

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.