github / github/codeql

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

Ouverte
#5,290 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
question
Langage dominant
CodeQL
Étoiles
10.1k
Forks
2.1k
Merge moyen
2 j 15 h
PR mergées (30 j)
141

Description

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

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.