github / github/codeql

Java: `StringLiteral` matches String concatenation of two String literals

Offen
#5,469 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
documentation Java question
Vorherrschende Sprache
CodeQL
Sterne
10.1k
Forks
2.1k
Ø Merge
2 T. 15 Std.
Gemergte PRs (30 T.)
141

Beschreibung

It appears the class `StringLiteral` matches String concatenation of two String literals.
This is not how the JLS [defines a String literal](https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.10.5). Instead they should be matched as separate String literals being operands of an `AddExpr` (which is a `CompileTimeConstantExpr`).

Query finding these erroneous `StringLiteral`s:
```ql
import java

from StringLiteral s
where
exists(s.getLiteral().indexOf("+"))
and not exists(s.getValue().indexOf("+"))
select s
```
[Query Console link](https://lgtm.com/query/1720584166166636188/)

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.