github / github/codeql

Java: Javadoc matches regular comments

オープン
#3,695 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
Java question
主要言語
CodeQL
スター
10.1k
フォーク
2.1k
平均マージ
2日 15時間
マージ済み PR(30日)
141

説明

**Description of the issue**
It appears `Javadoc` and some of the related classes match regular comments. This is pretty misleading because normally javadoc only refers to `/** ... */`, neither any of the QL classes nor the documentation of the containing module mentions this.
The [Learn QL: Javadoc](https://github.com/github/codeql/blob/master/docs/language/learn-ql/java/javadoc.rst) does not mention this either.

Similarly the concept of javadoc tags does not apply to regular comments (interestingly QL seems to honor that and does not find any in regular comments).

Example query:
```ql
from Javadoc javadoc
where
not exists (javadoc.getCommentedElement())
// Exclude license headers, though they are not javadoc either
and javadoc.getLocation().getStartLine() > 10
select javadoc
```

If you decide to stick to this decision, could the documentation of the QL classes and the module please be clarified and could respective predicates for comment types be added (though it might be hard to choose predicate names which are not misleading):
- is block comment (the JLS calls them ["traditional comment"](https://docs.oracle.com/javase/specs/jls/se14/html/jls-3.html#jls-3.7), though that is not very meaningful)
- is line comment

The currently existing predicate `getCommentedElement()` is not enough to determine whether it is a javadoc comment or a regular comment (since one could place `/** ... */` anywhere).
`semmlecode.dbscheme` provides `isNormalComment(@javadoc)`, but is that an implementation detail or may it be used?

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。