github / github/codeql

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

Đang mở
#3,649 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Java question
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ả

**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.

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.