Skip to content

Commit 05e2d26

Browse files
committed
JS: Update debugging stuff in API graphs
1 parent 67eef3a commit 05e2d26

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

javascript/ql/lib/semmle/javascript/ApiGraphs.qll

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,20 +1678,40 @@ module API {
16781678
import Cached
16791679

16801680
private module Debug {
1681+
private module FullInput implements StageInputSig {
1682+
pragma[inline]
1683+
predicate isAdditionalUseRoot(Node node) { none() }
1684+
1685+
pragma[inline]
1686+
predicate isAdditionalDefRoot(Node node) { none() }
1687+
1688+
bindingset[node]
1689+
predicate inScope(DataFlow::Node node) { any() }
1690+
}
1691+
1692+
private module Full = Stage<FullInput>;
1693+
16811694
query predicate missingDefNode(DataFlow::Node node) {
1682-
Stage1::rhs(_, _, node) and
1695+
Full::rhs(_, _, node) and
16831696
not exists(MkDef(node))
16841697
}
16851698

16861699
query predicate missingUseNode(DataFlow::Node node) {
1687-
Stage1::use(_, _, node) and
1700+
Full::use(_, _, node) and
16881701
not exists(MkUse(node))
16891702
}
16901703

16911704
query predicate lostEdge(Node pred, Label::ApiLabel lbl, Node succ) {
1692-
Stage1::edge(pred, lbl, succ) and
1705+
Full::edge(pred, lbl, succ) and
16931706
not Cached::edge(pred, lbl, succ)
16941707
}
1708+
1709+
query predicate counts(int numEdges, int numOverlayEdges, float ratio) {
1710+
numEdges = count(Node pred, Label::ApiLabel lbl, Node succ | Full::edge(pred, lbl, succ)) and
1711+
numOverlayEdges =
1712+
count(Node pred, Label::ApiLabel lbl, Node succ | Stage2::edge(pred, lbl, succ)) and
1713+
ratio = numOverlayEdges / numEdges.(float)
1714+
}
16951715
}
16961716

16971717
/**

0 commit comments

Comments
 (0)