Skip to content

cannot get correct results outside of vscode codeql extension #21673

@k4lizen

Description

@k4lizen

I have a path query like this:

class MyStuct extends Struct {
  MyFlow::PathNode source;
  MyFlow::PathNode sink;
  MyStuct() {
      MyFlow::flowPath(source, sink) and
      some_predicate(this, sink) and
  }
  MyFlow::PathNode getSink() { result = sink }
  MyFlow::PathNode getSource() { result = source }
}
from MyStuct s, MyFlow::PathNode source, MyFlow::PathNode sink
where
  source = s.getSource() and sink = s.getSink() 
select sink.getNode(), source, sink, "aaa"

and when I run it in the vscode codeql extension, I get 48 results, all of which are sensible and good and nicely browsable. I want to save this output to some actual (ideally human readable) file.

I run this:

codeql database run-queries ./source/source-db/ ./queries/my-query.ql
codeql bqrs decode ./source/source-db/results/awawa/queries/my-query.bqrs --format=csv

But I just get thousands of lines of

"& ...","& ...","& ...","aaa",
"& ...","& ...","& ...","aaa",
"& ...","& ...","& ...","aaa",
"& ...","& ...","& ...","aaa",

in the Result set: #select. Same story for --format=text, --format=json. Passing --entities=url shows some sensible information, but still thousands of lines, I just want the actual results.

Using

codeql database interpret-results  ./source/source-db/ ./queries/my-query.ql --format=csv --output=./a.csv

on the other hand does show me the same number of lines that vscode shows in the results, but the .csv file itself is completely borked, with bogus new-lines and empty columns. Like this:

,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa
aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa
aaa
aaa
aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"
,,"warning","aaa","/sources/my-source/myfile.c","1","2","3","4"

How do I actually get the 48 results that vscode shows me?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions