github / github/codeql

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

Đang mở
#8,688 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
enhancement Java
Ngôn ngữ chính
CodeQL
Star
10.1k
Fork
2.1k
Merge trung bình
2 ngày 15 giờ
Pull request đã merge (30 ngày)
141

Mô tả

### 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?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.