circle-ir 3.19.5 → 3.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analysis/passes/language-sources-pass.d.ts +2 -1
- package/dist/analysis/passes/language-sources-pass.js +111 -0
- package/dist/analysis/passes/language-sources-pass.js.map +1 -1
- package/dist/browser/circle-ir.js +300 -0
- package/dist/core/circle-ir-core.cjs +201 -0
- package/dist/core/circle-ir-core.js +201 -0
- package/dist/core/extractors/cfg.js +95 -0
- package/dist/core/extractors/cfg.js.map +1 -1
- package/dist/core/extractors/dfg.js +154 -0
- package/dist/core/extractors/dfg.js.map +1 -1
- package/package.json +1 -1
|
@@ -7526,6 +7526,9 @@ function buildCFG(tree, language) {
|
|
|
7526
7526
|
const allBlocks = [];
|
|
7527
7527
|
const allEdges = [];
|
|
7528
7528
|
let blockIdCounter = 0;
|
|
7529
|
+
if (effectiveLanguage === "bash") {
|
|
7530
|
+
return buildBashCFG(tree, blockIdCounter);
|
|
7531
|
+
}
|
|
7529
7532
|
if (isJavaScript) {
|
|
7530
7533
|
const functions = [
|
|
7531
7534
|
...findNodes(tree.rootNode, "function_declaration"),
|
|
@@ -7881,6 +7884,81 @@ function processSwitchStatement(stmt, startId, blocks, edges, isJavaScript) {
|
|
|
7881
7884
|
nextId: currentId
|
|
7882
7885
|
};
|
|
7883
7886
|
}
|
|
7887
|
+
function buildBashCFG(tree, startId) {
|
|
7888
|
+
const allBlocks = [];
|
|
7889
|
+
const allEdges = [];
|
|
7890
|
+
let blockIdCounter = startId;
|
|
7891
|
+
const functions = findNodes(tree.rootNode, "function_definition");
|
|
7892
|
+
for (const func2 of functions) {
|
|
7893
|
+
const body2 = func2.childForFieldName("body");
|
|
7894
|
+
if (!body2) continue;
|
|
7895
|
+
const { blocks, edges, nextId } = buildMethodCFG(body2, blockIdCounter, false);
|
|
7896
|
+
allBlocks.push(...blocks);
|
|
7897
|
+
allEdges.push(...edges);
|
|
7898
|
+
blockIdCounter = nextId;
|
|
7899
|
+
}
|
|
7900
|
+
const topLevelStatements = [];
|
|
7901
|
+
for (let i2 = 0; i2 < tree.rootNode.childCount; i2++) {
|
|
7902
|
+
const child = tree.rootNode.child(i2);
|
|
7903
|
+
if (child && child.type !== "function_definition" && isBashStatement(child)) {
|
|
7904
|
+
topLevelStatements.push(child);
|
|
7905
|
+
}
|
|
7906
|
+
}
|
|
7907
|
+
if (topLevelStatements.length > 0) {
|
|
7908
|
+
const entryBlock = {
|
|
7909
|
+
id: blockIdCounter++,
|
|
7910
|
+
type: "entry",
|
|
7911
|
+
start_line: topLevelStatements[0].startPosition.row + 1,
|
|
7912
|
+
end_line: topLevelStatements[0].startPosition.row + 1
|
|
7913
|
+
};
|
|
7914
|
+
allBlocks.push(entryBlock);
|
|
7915
|
+
let lastExitIds = [];
|
|
7916
|
+
let firstBlockId = -1;
|
|
7917
|
+
for (const stmt of topLevelStatements) {
|
|
7918
|
+
const result = processStatement(stmt, blockIdCounter, allBlocks, allEdges, false);
|
|
7919
|
+
blockIdCounter = result.nextId;
|
|
7920
|
+
if (firstBlockId === -1) {
|
|
7921
|
+
firstBlockId = result.entryId;
|
|
7922
|
+
} else {
|
|
7923
|
+
for (const exitId of lastExitIds) {
|
|
7924
|
+
allEdges.push({ from: exitId, to: result.entryId, type: "sequential" });
|
|
7925
|
+
}
|
|
7926
|
+
}
|
|
7927
|
+
lastExitIds = result.exitIds;
|
|
7928
|
+
}
|
|
7929
|
+
if (firstBlockId !== -1) {
|
|
7930
|
+
allEdges.push({ from: entryBlock.id, to: firstBlockId, type: "sequential" });
|
|
7931
|
+
}
|
|
7932
|
+
const exitBlock = {
|
|
7933
|
+
id: blockIdCounter++,
|
|
7934
|
+
type: "exit",
|
|
7935
|
+
start_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1,
|
|
7936
|
+
end_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1
|
|
7937
|
+
};
|
|
7938
|
+
allBlocks.push(exitBlock);
|
|
7939
|
+
for (const exitId of lastExitIds) {
|
|
7940
|
+
allEdges.push({ from: exitId, to: exitBlock.id, type: "sequential" });
|
|
7941
|
+
}
|
|
7942
|
+
}
|
|
7943
|
+
return { blocks: allBlocks, edges: allEdges };
|
|
7944
|
+
}
|
|
7945
|
+
function isBashStatement(node) {
|
|
7946
|
+
const bashStatementTypes = /* @__PURE__ */ new Set([
|
|
7947
|
+
"command",
|
|
7948
|
+
"variable_assignment",
|
|
7949
|
+
"if_statement",
|
|
7950
|
+
"for_statement",
|
|
7951
|
+
"while_statement",
|
|
7952
|
+
"case_statement",
|
|
7953
|
+
"pipeline",
|
|
7954
|
+
"list",
|
|
7955
|
+
"redirected_statement",
|
|
7956
|
+
"compound_statement",
|
|
7957
|
+
"subshell",
|
|
7958
|
+
"declaration_command"
|
|
7959
|
+
]);
|
|
7960
|
+
return bashStatementTypes.has(node.type);
|
|
7961
|
+
}
|
|
7884
7962
|
function isStatement(node, isJavaScript) {
|
|
7885
7963
|
const javaStatementTypes = /* @__PURE__ */ new Set([
|
|
7886
7964
|
"local_variable_declaration",
|
|
@@ -7971,6 +8049,9 @@ function buildDFG(tree, cache, language) {
|
|
|
7971
8049
|
if (effectiveLanguage === "rust") {
|
|
7972
8050
|
return buildRustDFG(tree, cache);
|
|
7973
8051
|
}
|
|
8052
|
+
if (effectiveLanguage === "bash") {
|
|
8053
|
+
return buildBashDFG(tree);
|
|
8054
|
+
}
|
|
7974
8055
|
return buildJavaDFG(tree, cache);
|
|
7975
8056
|
}
|
|
7976
8057
|
function buildJavaDFG(tree, cache) {
|
|
@@ -8697,6 +8778,126 @@ function computeChains(defs, uses) {
|
|
|
8697
8778
|
chains.sort((a, b) => a.from_def - b.from_def || a.to_def - b.to_def);
|
|
8698
8779
|
return chains;
|
|
8699
8780
|
}
|
|
8781
|
+
function buildBashDFG(tree) {
|
|
8782
|
+
const defs = [];
|
|
8783
|
+
const uses = [];
|
|
8784
|
+
let defIdCounter = 1;
|
|
8785
|
+
let useIdCounter = 1;
|
|
8786
|
+
const scopeStack = [/* @__PURE__ */ new Map()];
|
|
8787
|
+
walkTree(tree.rootNode, (node) => {
|
|
8788
|
+
if (node.type === "variable_assignment") {
|
|
8789
|
+
const nameNode = node.childForFieldName("name");
|
|
8790
|
+
if (nameNode) {
|
|
8791
|
+
const varName = getNodeText(nameNode);
|
|
8792
|
+
const def = {
|
|
8793
|
+
id: defIdCounter++,
|
|
8794
|
+
variable: varName,
|
|
8795
|
+
line: node.startPosition.row + 1,
|
|
8796
|
+
kind: "local"
|
|
8797
|
+
};
|
|
8798
|
+
defs.push(def);
|
|
8799
|
+
currentScope(scopeStack).set(varName, def.id);
|
|
8800
|
+
const valueNode = node.childForFieldName("value");
|
|
8801
|
+
if (valueNode) {
|
|
8802
|
+
extractBashUses(valueNode, uses, useIdCounter, scopeStack);
|
|
8803
|
+
useIdCounter = uses.length + 1;
|
|
8804
|
+
}
|
|
8805
|
+
}
|
|
8806
|
+
} else if (node.type === "command") {
|
|
8807
|
+
const nameNode = node.childForFieldName("name");
|
|
8808
|
+
if (nameNode && getNodeText(nameNode) === "read") {
|
|
8809
|
+
for (let i2 = 0; i2 < node.namedChildCount; i2++) {
|
|
8810
|
+
const arg = node.namedChild(i2);
|
|
8811
|
+
if (!arg || arg === nameNode) continue;
|
|
8812
|
+
if (arg.type === "word") {
|
|
8813
|
+
const text = getNodeText(arg);
|
|
8814
|
+
if (text.startsWith("-")) continue;
|
|
8815
|
+
const def = {
|
|
8816
|
+
id: defIdCounter++,
|
|
8817
|
+
variable: text,
|
|
8818
|
+
line: node.startPosition.row + 1,
|
|
8819
|
+
kind: "local"
|
|
8820
|
+
};
|
|
8821
|
+
defs.push(def);
|
|
8822
|
+
currentScope(scopeStack).set(text, def.id);
|
|
8823
|
+
}
|
|
8824
|
+
}
|
|
8825
|
+
}
|
|
8826
|
+
} else if (node.type === "for_statement") {
|
|
8827
|
+
const varNode = node.childForFieldName("variable");
|
|
8828
|
+
if (varNode) {
|
|
8829
|
+
const varName = getNodeText(varNode);
|
|
8830
|
+
const def = {
|
|
8831
|
+
id: defIdCounter++,
|
|
8832
|
+
variable: varName,
|
|
8833
|
+
line: node.startPosition.row + 1,
|
|
8834
|
+
kind: "local"
|
|
8835
|
+
};
|
|
8836
|
+
defs.push(def);
|
|
8837
|
+
currentScope(scopeStack).set(varName, def.id);
|
|
8838
|
+
}
|
|
8839
|
+
} else if (node.type === "simple_expansion") {
|
|
8840
|
+
const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
|
|
8841
|
+
if (varNameNode) {
|
|
8842
|
+
const varName = getNodeText(varNameNode);
|
|
8843
|
+
if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
|
|
8844
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8845
|
+
uses.push({
|
|
8846
|
+
id: useIdCounter++,
|
|
8847
|
+
variable: varName,
|
|
8848
|
+
line: node.startPosition.row + 1,
|
|
8849
|
+
def_id: reachingDef
|
|
8850
|
+
});
|
|
8851
|
+
}
|
|
8852
|
+
}
|
|
8853
|
+
} else if (node.type === "expansion") {
|
|
8854
|
+
const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
|
|
8855
|
+
if (varNameNode && varNameNode.type === "variable_name") {
|
|
8856
|
+
const varName = getNodeText(varNameNode);
|
|
8857
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8858
|
+
uses.push({
|
|
8859
|
+
id: useIdCounter++,
|
|
8860
|
+
variable: varName,
|
|
8861
|
+
line: node.startPosition.row + 1,
|
|
8862
|
+
def_id: reachingDef
|
|
8863
|
+
});
|
|
8864
|
+
}
|
|
8865
|
+
}
|
|
8866
|
+
});
|
|
8867
|
+
const chains = computeChains(defs, uses);
|
|
8868
|
+
return { defs, uses, chains };
|
|
8869
|
+
}
|
|
8870
|
+
function extractBashUses(node, uses, _startId, scopeStack) {
|
|
8871
|
+
walkTree(node, (child) => {
|
|
8872
|
+
if (child.type === "simple_expansion") {
|
|
8873
|
+
const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
|
|
8874
|
+
if (varNameNode) {
|
|
8875
|
+
const varName = getNodeText(varNameNode);
|
|
8876
|
+
if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
|
|
8877
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8878
|
+
uses.push({
|
|
8879
|
+
id: uses.length + 1,
|
|
8880
|
+
variable: varName,
|
|
8881
|
+
line: child.startPosition.row + 1,
|
|
8882
|
+
def_id: reachingDef
|
|
8883
|
+
});
|
|
8884
|
+
}
|
|
8885
|
+
}
|
|
8886
|
+
} else if (child.type === "expansion") {
|
|
8887
|
+
const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
|
|
8888
|
+
if (varNameNode && varNameNode.type === "variable_name") {
|
|
8889
|
+
const varName = getNodeText(varNameNode);
|
|
8890
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8891
|
+
uses.push({
|
|
8892
|
+
id: uses.length + 1,
|
|
8893
|
+
variable: varName,
|
|
8894
|
+
line: child.startPosition.row + 1,
|
|
8895
|
+
def_id: reachingDef
|
|
8896
|
+
});
|
|
8897
|
+
}
|
|
8898
|
+
}
|
|
8899
|
+
});
|
|
8900
|
+
}
|
|
8700
8901
|
function buildRustDFG(tree, cache) {
|
|
8701
8902
|
const defs = [];
|
|
8702
8903
|
const uses = [];
|
|
@@ -7461,6 +7461,9 @@ function buildCFG(tree, language) {
|
|
|
7461
7461
|
const allBlocks = [];
|
|
7462
7462
|
const allEdges = [];
|
|
7463
7463
|
let blockIdCounter = 0;
|
|
7464
|
+
if (effectiveLanguage === "bash") {
|
|
7465
|
+
return buildBashCFG(tree, blockIdCounter);
|
|
7466
|
+
}
|
|
7464
7467
|
if (isJavaScript) {
|
|
7465
7468
|
const functions = [
|
|
7466
7469
|
...findNodes(tree.rootNode, "function_declaration"),
|
|
@@ -7816,6 +7819,81 @@ function processSwitchStatement(stmt, startId, blocks, edges, isJavaScript) {
|
|
|
7816
7819
|
nextId: currentId
|
|
7817
7820
|
};
|
|
7818
7821
|
}
|
|
7822
|
+
function buildBashCFG(tree, startId) {
|
|
7823
|
+
const allBlocks = [];
|
|
7824
|
+
const allEdges = [];
|
|
7825
|
+
let blockIdCounter = startId;
|
|
7826
|
+
const functions = findNodes(tree.rootNode, "function_definition");
|
|
7827
|
+
for (const func2 of functions) {
|
|
7828
|
+
const body2 = func2.childForFieldName("body");
|
|
7829
|
+
if (!body2) continue;
|
|
7830
|
+
const { blocks, edges, nextId } = buildMethodCFG(body2, blockIdCounter, false);
|
|
7831
|
+
allBlocks.push(...blocks);
|
|
7832
|
+
allEdges.push(...edges);
|
|
7833
|
+
blockIdCounter = nextId;
|
|
7834
|
+
}
|
|
7835
|
+
const topLevelStatements = [];
|
|
7836
|
+
for (let i2 = 0; i2 < tree.rootNode.childCount; i2++) {
|
|
7837
|
+
const child = tree.rootNode.child(i2);
|
|
7838
|
+
if (child && child.type !== "function_definition" && isBashStatement(child)) {
|
|
7839
|
+
topLevelStatements.push(child);
|
|
7840
|
+
}
|
|
7841
|
+
}
|
|
7842
|
+
if (topLevelStatements.length > 0) {
|
|
7843
|
+
const entryBlock = {
|
|
7844
|
+
id: blockIdCounter++,
|
|
7845
|
+
type: "entry",
|
|
7846
|
+
start_line: topLevelStatements[0].startPosition.row + 1,
|
|
7847
|
+
end_line: topLevelStatements[0].startPosition.row + 1
|
|
7848
|
+
};
|
|
7849
|
+
allBlocks.push(entryBlock);
|
|
7850
|
+
let lastExitIds = [];
|
|
7851
|
+
let firstBlockId = -1;
|
|
7852
|
+
for (const stmt of topLevelStatements) {
|
|
7853
|
+
const result = processStatement(stmt, blockIdCounter, allBlocks, allEdges, false);
|
|
7854
|
+
blockIdCounter = result.nextId;
|
|
7855
|
+
if (firstBlockId === -1) {
|
|
7856
|
+
firstBlockId = result.entryId;
|
|
7857
|
+
} else {
|
|
7858
|
+
for (const exitId of lastExitIds) {
|
|
7859
|
+
allEdges.push({ from: exitId, to: result.entryId, type: "sequential" });
|
|
7860
|
+
}
|
|
7861
|
+
}
|
|
7862
|
+
lastExitIds = result.exitIds;
|
|
7863
|
+
}
|
|
7864
|
+
if (firstBlockId !== -1) {
|
|
7865
|
+
allEdges.push({ from: entryBlock.id, to: firstBlockId, type: "sequential" });
|
|
7866
|
+
}
|
|
7867
|
+
const exitBlock = {
|
|
7868
|
+
id: blockIdCounter++,
|
|
7869
|
+
type: "exit",
|
|
7870
|
+
start_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1,
|
|
7871
|
+
end_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1
|
|
7872
|
+
};
|
|
7873
|
+
allBlocks.push(exitBlock);
|
|
7874
|
+
for (const exitId of lastExitIds) {
|
|
7875
|
+
allEdges.push({ from: exitId, to: exitBlock.id, type: "sequential" });
|
|
7876
|
+
}
|
|
7877
|
+
}
|
|
7878
|
+
return { blocks: allBlocks, edges: allEdges };
|
|
7879
|
+
}
|
|
7880
|
+
function isBashStatement(node) {
|
|
7881
|
+
const bashStatementTypes = /* @__PURE__ */ new Set([
|
|
7882
|
+
"command",
|
|
7883
|
+
"variable_assignment",
|
|
7884
|
+
"if_statement",
|
|
7885
|
+
"for_statement",
|
|
7886
|
+
"while_statement",
|
|
7887
|
+
"case_statement",
|
|
7888
|
+
"pipeline",
|
|
7889
|
+
"list",
|
|
7890
|
+
"redirected_statement",
|
|
7891
|
+
"compound_statement",
|
|
7892
|
+
"subshell",
|
|
7893
|
+
"declaration_command"
|
|
7894
|
+
]);
|
|
7895
|
+
return bashStatementTypes.has(node.type);
|
|
7896
|
+
}
|
|
7819
7897
|
function isStatement(node, isJavaScript) {
|
|
7820
7898
|
const javaStatementTypes = /* @__PURE__ */ new Set([
|
|
7821
7899
|
"local_variable_declaration",
|
|
@@ -7906,6 +7984,9 @@ function buildDFG(tree, cache, language) {
|
|
|
7906
7984
|
if (effectiveLanguage === "rust") {
|
|
7907
7985
|
return buildRustDFG(tree, cache);
|
|
7908
7986
|
}
|
|
7987
|
+
if (effectiveLanguage === "bash") {
|
|
7988
|
+
return buildBashDFG(tree);
|
|
7989
|
+
}
|
|
7909
7990
|
return buildJavaDFG(tree, cache);
|
|
7910
7991
|
}
|
|
7911
7992
|
function buildJavaDFG(tree, cache) {
|
|
@@ -8632,6 +8713,126 @@ function computeChains(defs, uses) {
|
|
|
8632
8713
|
chains.sort((a, b) => a.from_def - b.from_def || a.to_def - b.to_def);
|
|
8633
8714
|
return chains;
|
|
8634
8715
|
}
|
|
8716
|
+
function buildBashDFG(tree) {
|
|
8717
|
+
const defs = [];
|
|
8718
|
+
const uses = [];
|
|
8719
|
+
let defIdCounter = 1;
|
|
8720
|
+
let useIdCounter = 1;
|
|
8721
|
+
const scopeStack = [/* @__PURE__ */ new Map()];
|
|
8722
|
+
walkTree(tree.rootNode, (node) => {
|
|
8723
|
+
if (node.type === "variable_assignment") {
|
|
8724
|
+
const nameNode = node.childForFieldName("name");
|
|
8725
|
+
if (nameNode) {
|
|
8726
|
+
const varName = getNodeText(nameNode);
|
|
8727
|
+
const def = {
|
|
8728
|
+
id: defIdCounter++,
|
|
8729
|
+
variable: varName,
|
|
8730
|
+
line: node.startPosition.row + 1,
|
|
8731
|
+
kind: "local"
|
|
8732
|
+
};
|
|
8733
|
+
defs.push(def);
|
|
8734
|
+
currentScope(scopeStack).set(varName, def.id);
|
|
8735
|
+
const valueNode = node.childForFieldName("value");
|
|
8736
|
+
if (valueNode) {
|
|
8737
|
+
extractBashUses(valueNode, uses, useIdCounter, scopeStack);
|
|
8738
|
+
useIdCounter = uses.length + 1;
|
|
8739
|
+
}
|
|
8740
|
+
}
|
|
8741
|
+
} else if (node.type === "command") {
|
|
8742
|
+
const nameNode = node.childForFieldName("name");
|
|
8743
|
+
if (nameNode && getNodeText(nameNode) === "read") {
|
|
8744
|
+
for (let i2 = 0; i2 < node.namedChildCount; i2++) {
|
|
8745
|
+
const arg = node.namedChild(i2);
|
|
8746
|
+
if (!arg || arg === nameNode) continue;
|
|
8747
|
+
if (arg.type === "word") {
|
|
8748
|
+
const text = getNodeText(arg);
|
|
8749
|
+
if (text.startsWith("-")) continue;
|
|
8750
|
+
const def = {
|
|
8751
|
+
id: defIdCounter++,
|
|
8752
|
+
variable: text,
|
|
8753
|
+
line: node.startPosition.row + 1,
|
|
8754
|
+
kind: "local"
|
|
8755
|
+
};
|
|
8756
|
+
defs.push(def);
|
|
8757
|
+
currentScope(scopeStack).set(text, def.id);
|
|
8758
|
+
}
|
|
8759
|
+
}
|
|
8760
|
+
}
|
|
8761
|
+
} else if (node.type === "for_statement") {
|
|
8762
|
+
const varNode = node.childForFieldName("variable");
|
|
8763
|
+
if (varNode) {
|
|
8764
|
+
const varName = getNodeText(varNode);
|
|
8765
|
+
const def = {
|
|
8766
|
+
id: defIdCounter++,
|
|
8767
|
+
variable: varName,
|
|
8768
|
+
line: node.startPosition.row + 1,
|
|
8769
|
+
kind: "local"
|
|
8770
|
+
};
|
|
8771
|
+
defs.push(def);
|
|
8772
|
+
currentScope(scopeStack).set(varName, def.id);
|
|
8773
|
+
}
|
|
8774
|
+
} else if (node.type === "simple_expansion") {
|
|
8775
|
+
const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
|
|
8776
|
+
if (varNameNode) {
|
|
8777
|
+
const varName = getNodeText(varNameNode);
|
|
8778
|
+
if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
|
|
8779
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8780
|
+
uses.push({
|
|
8781
|
+
id: useIdCounter++,
|
|
8782
|
+
variable: varName,
|
|
8783
|
+
line: node.startPosition.row + 1,
|
|
8784
|
+
def_id: reachingDef
|
|
8785
|
+
});
|
|
8786
|
+
}
|
|
8787
|
+
}
|
|
8788
|
+
} else if (node.type === "expansion") {
|
|
8789
|
+
const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
|
|
8790
|
+
if (varNameNode && varNameNode.type === "variable_name") {
|
|
8791
|
+
const varName = getNodeText(varNameNode);
|
|
8792
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8793
|
+
uses.push({
|
|
8794
|
+
id: useIdCounter++,
|
|
8795
|
+
variable: varName,
|
|
8796
|
+
line: node.startPosition.row + 1,
|
|
8797
|
+
def_id: reachingDef
|
|
8798
|
+
});
|
|
8799
|
+
}
|
|
8800
|
+
}
|
|
8801
|
+
});
|
|
8802
|
+
const chains = computeChains(defs, uses);
|
|
8803
|
+
return { defs, uses, chains };
|
|
8804
|
+
}
|
|
8805
|
+
function extractBashUses(node, uses, _startId, scopeStack) {
|
|
8806
|
+
walkTree(node, (child) => {
|
|
8807
|
+
if (child.type === "simple_expansion") {
|
|
8808
|
+
const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
|
|
8809
|
+
if (varNameNode) {
|
|
8810
|
+
const varName = getNodeText(varNameNode);
|
|
8811
|
+
if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
|
|
8812
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8813
|
+
uses.push({
|
|
8814
|
+
id: uses.length + 1,
|
|
8815
|
+
variable: varName,
|
|
8816
|
+
line: child.startPosition.row + 1,
|
|
8817
|
+
def_id: reachingDef
|
|
8818
|
+
});
|
|
8819
|
+
}
|
|
8820
|
+
}
|
|
8821
|
+
} else if (child.type === "expansion") {
|
|
8822
|
+
const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
|
|
8823
|
+
if (varNameNode && varNameNode.type === "variable_name") {
|
|
8824
|
+
const varName = getNodeText(varNameNode);
|
|
8825
|
+
const reachingDef = findReachingDef(varName, scopeStack);
|
|
8826
|
+
uses.push({
|
|
8827
|
+
id: uses.length + 1,
|
|
8828
|
+
variable: varName,
|
|
8829
|
+
line: child.startPosition.row + 1,
|
|
8830
|
+
def_id: reachingDef
|
|
8831
|
+
});
|
|
8832
|
+
}
|
|
8833
|
+
}
|
|
8834
|
+
});
|
|
8835
|
+
}
|
|
8635
8836
|
function buildRustDFG(tree, cache) {
|
|
8636
8837
|
const defs = [];
|
|
8637
8838
|
const uses = [];
|
|
@@ -39,6 +39,9 @@ export function buildCFG(tree, language) {
|
|
|
39
39
|
const allBlocks = [];
|
|
40
40
|
const allEdges = [];
|
|
41
41
|
let blockIdCounter = 0;
|
|
42
|
+
if (effectiveLanguage === 'bash') {
|
|
43
|
+
return buildBashCFG(tree, blockIdCounter);
|
|
44
|
+
}
|
|
42
45
|
if (isJavaScript) {
|
|
43
46
|
// Find all JavaScript function bodies
|
|
44
47
|
const functions = [
|
|
@@ -467,6 +470,98 @@ function processSwitchStatement(stmt, startId, blocks, edges, isJavaScript) {
|
|
|
467
470
|
nextId: currentId,
|
|
468
471
|
};
|
|
469
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Build CFG for Bash/Shell code.
|
|
475
|
+
*
|
|
476
|
+
* Processes function_definition bodies and the top-level program body
|
|
477
|
+
* as a synthetic "main" function.
|
|
478
|
+
*/
|
|
479
|
+
function buildBashCFG(tree, startId) {
|
|
480
|
+
const allBlocks = [];
|
|
481
|
+
const allEdges = [];
|
|
482
|
+
let blockIdCounter = startId;
|
|
483
|
+
// Process function_definition nodes
|
|
484
|
+
const functions = findNodes(tree.rootNode, 'function_definition');
|
|
485
|
+
for (const func of functions) {
|
|
486
|
+
const body = func.childForFieldName('body');
|
|
487
|
+
if (!body)
|
|
488
|
+
continue;
|
|
489
|
+
const { blocks, edges, nextId } = buildMethodCFG(body, blockIdCounter, false);
|
|
490
|
+
allBlocks.push(...blocks);
|
|
491
|
+
allEdges.push(...edges);
|
|
492
|
+
blockIdCounter = nextId;
|
|
493
|
+
}
|
|
494
|
+
// Process top-level program body as a synthetic "main"
|
|
495
|
+
// Filter out function_definition nodes to avoid duplicating them
|
|
496
|
+
const topLevelStatements = [];
|
|
497
|
+
for (let i = 0; i < tree.rootNode.childCount; i++) {
|
|
498
|
+
const child = tree.rootNode.child(i);
|
|
499
|
+
if (child && child.type !== 'function_definition' && isBashStatement(child)) {
|
|
500
|
+
topLevelStatements.push(child);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (topLevelStatements.length > 0) {
|
|
504
|
+
// Create entry block
|
|
505
|
+
const entryBlock = {
|
|
506
|
+
id: blockIdCounter++,
|
|
507
|
+
type: 'entry',
|
|
508
|
+
start_line: topLevelStatements[0].startPosition.row + 1,
|
|
509
|
+
end_line: topLevelStatements[0].startPosition.row + 1,
|
|
510
|
+
};
|
|
511
|
+
allBlocks.push(entryBlock);
|
|
512
|
+
let lastExitIds = [];
|
|
513
|
+
let firstBlockId = -1;
|
|
514
|
+
for (const stmt of topLevelStatements) {
|
|
515
|
+
const result = processStatement(stmt, blockIdCounter, allBlocks, allEdges, false);
|
|
516
|
+
blockIdCounter = result.nextId;
|
|
517
|
+
if (firstBlockId === -1) {
|
|
518
|
+
firstBlockId = result.entryId;
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
for (const exitId of lastExitIds) {
|
|
522
|
+
allEdges.push({ from: exitId, to: result.entryId, type: 'sequential' });
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
lastExitIds = result.exitIds;
|
|
526
|
+
}
|
|
527
|
+
// Connect entry to first statement
|
|
528
|
+
if (firstBlockId !== -1) {
|
|
529
|
+
allEdges.push({ from: entryBlock.id, to: firstBlockId, type: 'sequential' });
|
|
530
|
+
}
|
|
531
|
+
// Create exit block
|
|
532
|
+
const exitBlock = {
|
|
533
|
+
id: blockIdCounter++,
|
|
534
|
+
type: 'exit',
|
|
535
|
+
start_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1,
|
|
536
|
+
end_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1,
|
|
537
|
+
};
|
|
538
|
+
allBlocks.push(exitBlock);
|
|
539
|
+
for (const exitId of lastExitIds) {
|
|
540
|
+
allEdges.push({ from: exitId, to: exitBlock.id, type: 'sequential' });
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
return { blocks: allBlocks, edges: allEdges };
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Check if a Bash node is a statement-like construct.
|
|
547
|
+
*/
|
|
548
|
+
function isBashStatement(node) {
|
|
549
|
+
const bashStatementTypes = new Set([
|
|
550
|
+
'command',
|
|
551
|
+
'variable_assignment',
|
|
552
|
+
'if_statement',
|
|
553
|
+
'for_statement',
|
|
554
|
+
'while_statement',
|
|
555
|
+
'case_statement',
|
|
556
|
+
'pipeline',
|
|
557
|
+
'list',
|
|
558
|
+
'redirected_statement',
|
|
559
|
+
'compound_statement',
|
|
560
|
+
'subshell',
|
|
561
|
+
'declaration_command',
|
|
562
|
+
]);
|
|
563
|
+
return bashStatementTypes.has(node.type);
|
|
564
|
+
}
|
|
470
565
|
/**
|
|
471
566
|
* Check if a node is a statement.
|
|
472
567
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cfg.js","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cfg.js","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"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"}
|