github / github/codeql

Query Console does not show elements without toString() / Some elements have no toString()

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

Beschreibung

Relates to #2397, #2538

The Query Console does not show elements whose `toString()` result is `none()` and for multiple languages there are elements without a `toString()` result; this can make debugging rather difficult.
(I have not tested whether this affects the VSCode extension as well)

I am not familiar with the CodeQL classes for the languages other than Java, so the following queries might be flawed.
For all affected languages, including the element whose `toString()` is checked in the `select` clause makes the query yield no results.

# C/C++ (affected)
```ql
import cpp

from ElementBase e, boolean hasToString
where
if exists(e.toString()) then hasToString = true else hasToString = false
and hasToString = false
select e.getAPrimaryQlClass(), hasToString
```
[Query Console link](https://lgtm.com/query/7279762177209777278/)

# C# (affected)
```ql
import csharp

from Element e, boolean hasToString, boolean hasLocation
where
if exists(e.toString()) then hasToString = true else hasToString = false
and if exists(e.getLocation()) then hasLocation = true else hasLocation = false
and hasToString = false
select e.getAPrimaryQlClass(), hasToString, hasLocation
```
[Query Console link](https://lgtm.com/query/4316710491514805982/)

# Go
Not sure if affected; there are no demo projects to scan.
```ql
import go

from Locatable l, boolean hasToString, boolean hasLocation
where
if exists(l.toString()) then hasToString = true else hasToString = false
and if exists(l.getLocation()) then hasLocation = true else hasLocation = false
and hasToString = false
select hasToString, hasLocation
```

# Java (affected)
See also #5289
```ql
import java

from Top top, boolean hasToString, boolean hasLocation
where
if exists(top.toString()) then hasToString = true else hasToString = false
and if exists(top.getLocation()) then hasLocation = true else hasLocation = false
and hasToString = false
select top.getAPrimaryQlClass(), hasToString, hasLocation
```
[Query Console link](https://lgtm.com/query/2811528914731288766/)

# JavaScript (not affected?)
```ql
import javascript

from Locatable l, boolean hasToString, boolean hasLocation
where
if exists(l.toString()) then hasToString = true else hasToString = false
and if exists(l.getLocation()) then hasLocation = true else hasLocation = false
and hasToString = false
select l.getAPrimaryQlClass(), hasToString, hasLocation
```
[Query Console link](https://lgtm.com/query/1772034542434545159/)

# Python (not affected?)
```ql
import python

from AstNode n, boolean hasToString, boolean hasLocation
where
if exists(n.toString()) then hasToString = true else hasToString = false
and if exists(n.getLocation()) then hasLocation = true else hasLocation = false
and hasToString = false
select hasToString, hasLocation
```
[Query Console link](https://lgtm.com/query/6347168432907377414/)

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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