github / github/codeql

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

Aperta
#5,290 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
question
Lingua principale
CodeQL
Stelle
10.1k
Fork
2.1k
Merge medio
2g 15h
PR unite (30g)
141

Descrizione

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/)

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.