Skip to content

Graph viewer: edges ordered by wrong attribute #1332

Open
@nickrolfe

Description

@nickrolfe

The graph viewer displays child nodes in the order specified by the semmle.order attribute on the nodes predicate, when it should display them in the order specified by the semmle.order attribute on the edges predicate.

This can be demonstrated with the following graph query:

/**
 * @kind graph
 * @id foo
 */
query predicate nodes(string node, string attr, string val) {
  exists(int i | i = [0 .. 5] and node = i.toString() |
    attr = "semmle.label" and val = node
    or
    attr = "semmle.order" and val = (-i).toString()
  )
}

query predicate edges(string a, string b, string attr, string val) {
  (
    a = "0" and b = ["1", "2"]
    or
    a = "3" and b = ["4", "5"]
  ) and
  (
    attr = "semmle.label" and val = ""
    or
    attr = "semmle.order" and val = b.toString()
  )
}

The nodes predicate specifies that nodes should be ordered in descending order (-i), while the edges predicate specifies that edges should be ordered in ascending order.

In the following screenshot you can see that, while the two subgraphs appear to be ordered correctly, i.e. in descending order of the root node's value (3, then 0), the child nodes also appear left-to-right in descending order (5, 4; 2, 1), which suggests to me that they are also being ordered according to the attribute in the nodes predicate. I would expect them to appear in ascending order.

image

Version

VS Code: 1.66.2
CodeQL extension: 1.6.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    VSCodebugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions