github / github/codeql

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

未關閉
#3,649 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
Java question
主要語言
CodeQL
星號
10.1k
分支
2.1k
平均合併
2 天 15 小時
30 天內合併 PR
141

描述

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

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。