Skip to content

Commit 82926db

Browse files
committed
JS: Update debugging stuff in API graphs
1 parent 1340d14 commit 82926db

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
@@ -1698,20 +1698,40 @@ module API {
16981698
import Cached
16991699

17001700
private module Debug {
1701+
private module FullInput implements StageInputSig {
1702+
pragma[inline]
1703+
predicate isAdditionalUseRoot(Node node) { none() }
1704+
1705+
pragma[inline]
1706+
predicate isAdditionalDefRoot(Node node) { none() }
1707+
1708+
bindingset[node]
1709+
predicate inScope(DataFlow::Node node) { any() }
1710+
}
1711+
1712+
private module Full = Stage<FullInput>;
1713+
17011714
query predicate missingDefNode(DataFlow::Node node) {
1702-
Stage1::rhs(_, _, node) and
1715+
Full::rhs(_, _, node) and
17031716
not exists(MkDef(node))
17041717
}
17051718

17061719
query predicate missingUseNode(DataFlow::Node node) {
1707-
Stage1::use(_, _, node) and
1720+
Full::use(_, _, node) and
17081721
not exists(MkUse(node))
17091722
}
17101723

17111724
query predicate lostEdge(Node pred, Label::ApiLabel lbl, Node succ) {
1712-
Stage1::edge(pred, lbl, succ) and
1725+
Full::edge(pred, lbl, succ) and
17131726
not Cached::edge(pred, lbl, succ)
17141727
}
1728+
1729+
query predicate counts(int numEdges, int numOverlayEdges, float ratio) {
1730+
numEdges = count(Node pred, Label::ApiLabel lbl, Node succ | Full::edge(pred, lbl, succ)) and
1731+
numOverlayEdges =
1732+
count(Node pred, Label::ApiLabel lbl, Node succ | Stage2::edge(pred, lbl, succ)) and
1733+
ratio = numOverlayEdges / numEdges.(float)
1734+
}
17151735
}
17161736

17171737
/**

0 commit comments

Comments
 (0)