Java: Support `CompileTimeConstantExpr` for constant fields from compiled classes
- 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.