@eagleoutice/flowr 2.8.5 → 2.8.6
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/README.md +14 -14
- package/cli/flowr.js +2 -0
- package/cli/repl/commands/repl-execute.js +1 -1
- package/documentation/wiki-analyzer.js +1 -1
- package/documentation/wiki-dataflow-graph.js +1 -1
- package/package.json +1 -1
- package/queries/catalog/call-context-query/call-context-query-executor.js +9 -4
- package/util/version.js +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ It offers a wide variety of features, for example:
|
|
|
24
24
|
|
|
25
25
|
```shell
|
|
26
26
|
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
|
|
27
|
-
flowR repl using flowR v2.
|
|
27
|
+
flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
|
|
28
28
|
R> :query @linter "read.csv(\"/root/x.txt\")"
|
|
29
29
|
```
|
|
30
30
|
|
|
@@ -45,7 +45,7 @@ It offers a wide variety of features, for example:
|
|
|
45
45
|
╰ Absolute Paths (absolute-file-paths):
|
|
46
46
|
╰ certain:
|
|
47
47
|
╰ Path `/root/x.txt` at 1.1-23
|
|
48
|
-
╰ Metadata: totalConsidered: 1, totalUnknown: 0, searchTimeMs:
|
|
48
|
+
╰ Metadata: totalConsidered: 1, totalUnknown: 0, searchTimeMs: 1, processTimeMs: 0
|
|
49
49
|
╰ Unused Definitions (unused-definitions):
|
|
50
50
|
╰ Metadata: totalConsidered: 0, searchTimeMs: 0, processTimeMs: 0
|
|
51
51
|
╰ Naming Convention (naming-convention):
|
|
@@ -53,7 +53,7 @@ It offers a wide variety of features, for example:
|
|
|
53
53
|
╰ Network Functions (network-functions):
|
|
54
54
|
╰ Metadata: totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs: 0, processTimeMs: 0
|
|
55
55
|
╰ Dataframe Access Validation (dataframe-access-validation):
|
|
56
|
-
╰ Metadata: numOperations: 0, numAccesses: 0, totalAccessed: 0, searchTimeMs: 0, processTimeMs:
|
|
56
|
+
╰ Metadata: numOperations: 0, numAccesses: 0, totalAccessed: 0, searchTimeMs: 0, processTimeMs: 0
|
|
57
57
|
╰ Dead Code (dead-code):
|
|
58
58
|
╰ Metadata: consideredNodes: 5, searchTimeMs: 0, processTimeMs: 0
|
|
59
59
|
╰ Useless Loops (useless-loop):
|
|
@@ -82,7 +82,7 @@ It offers a wide variety of features, for example:
|
|
|
82
82
|
|
|
83
83
|
Query: **linter** (2 ms)\
|
|
84
84
|
╰ **Deprecated Functions** (deprecated-functions):\
|
|
85
|
-
╰ _Metadata_: <code>totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs:
|
|
85
|
+
╰ _Metadata_: <code>totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs: 0, processTimeMs: 1</code>\
|
|
86
86
|
╰ **File Path Validity** (file-path-validity):\
|
|
87
87
|
╰ certain:\
|
|
88
88
|
╰ Path `/root/x.txt` at 1.1-23\
|
|
@@ -105,11 +105,11 @@ It offers a wide variety of features, for example:
|
|
|
105
105
|
╰ _Metadata_: <code>consideredNodes: 5, searchTimeMs: 0, processTimeMs: 0</code>\
|
|
106
106
|
╰ **Useless Loops** (useless-loop):\
|
|
107
107
|
╰ _Metadata_: <code>numOfUselessLoops: 0, searchTimeMs: 0, processTimeMs: 0</code>\
|
|
108
|
-
_All queries together required ≈2 ms (1ms accuracy, total
|
|
108
|
+
_All queries together required ≈2 ms (1ms accuracy, total 3 ms)_
|
|
109
109
|
|
|
110
110
|
<details> <summary style="color:gray">Show Detailed Results as Json</summary>
|
|
111
111
|
|
|
112
|
-
The analysis required _2.
|
|
112
|
+
The analysis required _2.6 ms_ (including parsing and normalization and the query) within the generation environment.
|
|
113
113
|
|
|
114
114
|
In general, the JSON contains the Ids of the nodes in question as they are present in the normalized AST or the dataflow graph of flowR.
|
|
115
115
|
Please consult the [Interface](https://github.com/flowr-analysis/flowr/wiki/Interface) wiki page for more information on how to get those.
|
|
@@ -126,13 +126,14 @@ It offers a wide variety of features, for example:
|
|
|
126
126
|
".meta": {
|
|
127
127
|
"totalCalls": 0,
|
|
128
128
|
"totalFunctionDefinitions": 0,
|
|
129
|
-
"searchTimeMs":
|
|
130
|
-
"processTimeMs":
|
|
129
|
+
"searchTimeMs": 0,
|
|
130
|
+
"processTimeMs": 1
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
"file-path-validity": {
|
|
134
134
|
"results": [
|
|
135
135
|
{
|
|
136
|
+
"involvedId": 3,
|
|
136
137
|
"range": [
|
|
137
138
|
1,
|
|
138
139
|
1,
|
|
@@ -307,7 +308,7 @@ It offers a wide variety of features, for example:
|
|
|
307
308
|
|
|
308
309
|
```shell
|
|
309
310
|
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
|
|
310
|
-
flowR repl using flowR v2.
|
|
311
|
+
flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
|
|
311
312
|
R> :query @static-slice (11@sum) file://test/testfiles/example.R
|
|
312
313
|
```
|
|
313
314
|
|
|
@@ -321,7 +322,7 @@ It offers a wide variety of features, for example:
|
|
|
321
322
|
N <- 10
|
|
322
323
|
for(i in 1:(N-1)) sum <- sum + i + w
|
|
323
324
|
sum
|
|
324
|
-
All queries together required ≈
|
|
325
|
+
All queries together required ≈3 ms (1ms accuracy, total 3 ms)
|
|
325
326
|
```
|
|
326
327
|
|
|
327
328
|
|
|
@@ -355,7 +356,7 @@ It offers a wide variety of features, for example:
|
|
|
355
356
|
|
|
356
357
|
|
|
357
358
|
* 🚀 **fast call-graph, data-, and control-flow graphs**\
|
|
358
|
-
Within just [<i><span title="This measurement is automatically fetched from the latest benchmark!">
|
|
359
|
+
Within just [<i><span title="This measurement is automatically fetched from the latest benchmark!">117.7 ms</span></i> (as of Jan 5, 2026)](https://flowr-analysis.github.io/flowr/wiki/stats/benchmark),
|
|
359
360
|
_flowR_ can analyze the data- and control-flow of the average real-world R script. See the [benchmarks](https://flowr-analysis.github.io/flowr/wiki/stats/benchmark) for more information,
|
|
360
361
|
and consult the [wiki pages](https://github.com/flowr-analysis/flowr/wiki/dataflow-graph) for more details on the dataflow graphs as well as call graphs.
|
|
361
362
|
|
|
@@ -391,7 +392,7 @@ It offers a wide variety of features, for example:
|
|
|
391
392
|
|
|
392
393
|
```shell
|
|
393
394
|
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
|
|
394
|
-
flowR repl using flowR v2.
|
|
395
|
+
flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
|
|
395
396
|
R> :dataflow* test/testfiles/example.R
|
|
396
397
|
```
|
|
397
398
|
|
|
@@ -401,7 +402,6 @@ It offers a wide variety of features, for example:
|
|
|
401
402
|
|
|
402
403
|
```text
|
|
403
404
|
https://mermaid.live/view#base64:eyJjb2RlIjoiZmxvd2NoYXJ0IEJUXG4gICAgMChbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RcbiAgICAgICgwKVxuICAgICAgKjEuMS00KmBcIl0pXG4gICAgMShbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RmaWxlc1xuICAgICAgKDEpXG4gICAgICAqMS42LTE0KmBcIl0pXG4gICAgMltbXCJgIzkxO1JCaW5hcnlPcCM5MzsgL1xuICAgICAgKDIpXG4gICAgICAqMS4xLTE0KlxuICAgICgwLCAxKWBcIl1dXG4gICAgYnVpbHQtaW46X1tcImBCdWlsdC1Jbjpcbi9gXCJdXG4gICAgc3R5bGUgYnVpbHQtaW46XyBzdHJva2U6Z3JheSxmaWxsOmdyYXksc3Ryb2tlLXdpZHRoOjJweCxvcGFjaXR5Oi44O1xuICAgIDMoW1wiYCM5MTtSU3ltYm9sIzkzOyBleGFtcGxlLlJcbiAgICAgICgzKVxuICAgICAgKjEuMTYtMjQqYFwiXSlcbiAgICA0W1tcImAjOTE7UkJpbmFyeU9wIzkzOyAvXG4gICAgICAoNClcbiAgICAgICoxLjEtMjQqXG4gICAgKDIsIDMpYFwiXV1cbiAgICAyIC0tPnxcInJlYWRzLCBhcmd1bWVudFwifCAwXG4gICAgMiAtLT58XCJyZWFkcywgYXJndW1lbnRcInwgMVxuICAgIDIgLS4tPnxcInJlYWRzLCBjYWxsc1wifCBidWlsdC1pbjpfXG4gICAgbGlua1N0eWxlIDIgc3Ryb2tlOmdyYXk7XG4gICAgNCAtLT58XCJyZWFkcywgYXJndW1lbnRcInwgMlxuICAgIDQgLS0+fFwicmVhZHMsIGFyZ3VtZW50XCJ8IDNcbiAgICA0IC0uLT58XCJyZWFkcywgY2FsbHNcInwgYnVpbHQtaW46X1xuICAgIGxpbmtTdHlsZSA1IHN0cm9rZTpncmF5OyIsIm1lcm1haWQiOnsiYXV0b1N5bmMiOnRydWV9fQ==
|
|
404
|
-
Copied mermaid url to clipboard (dataflow: 0ms).
|
|
405
405
|
```
|
|
406
406
|
|
|
407
407
|
|
|
@@ -697,7 +697,7 @@ It offers a wide variety of features, for example:
|
|
|
697
697
|
```
|
|
698
698
|
|
|
699
699
|
|
|
700
|
-
(The analysis required
|
|
700
|
+
(The analysis required _4.1 ms_ (including parse and normalize, using the [tree-sitter](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
|
|
701
701
|
|
|
702
702
|
|
|
703
703
|
|
package/cli/flowr.js
CHANGED
|
@@ -136,6 +136,8 @@ async function mainRepl() {
|
|
|
136
136
|
}
|
|
137
137
|
else {
|
|
138
138
|
await (0, print_version_1.printVersionRepl)(defaultEngine);
|
|
139
|
+
const w = (x) => ansi_1.ansiFormatter.format(x, { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 3 /* FontStyles.Italic */ });
|
|
140
|
+
console.log(w('use ') + ansi_1.ansiFormatter.format(':help', { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 1 /* FontStyles.Bold */ }) + w(' to get a list of available commands.'));
|
|
139
141
|
await (0, core_1.repl)({ analyzer: analyzer, allowRSessionAccess });
|
|
140
142
|
}
|
|
141
143
|
process.exit(0);
|
|
@@ -33,7 +33,7 @@ async function executeRShellCommand(output, analyzer, statement) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
exports.executeCommand = {
|
|
36
|
-
description: 'Execute the given code as R code
|
|
36
|
+
description: 'Execute the given code as R code. This requires the `--r-session-access` flag to be set and requires the r-shell engine.',
|
|
37
37
|
isCodeCommand: false,
|
|
38
38
|
usageExample: ':execute',
|
|
39
39
|
aliases: ['e', 'r'],
|
|
@@ -112,7 +112,7 @@ The builder provides two methods for building the analyzer:
|
|
|
112
112
|
|
|
113
113
|
For more information on how to configure the builder, please refer to the [Builder Configuration](#builder-configuration) section below.
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
${(0, doc_structure_1.section)('Overview of the Analyzer', 3)}
|
|
116
116
|
|
|
117
117
|
Once you have created an analyzer instance, you can add R files, folders, or even entire projects for analysis using the
|
|
118
118
|
${ctx.linkM(flowr_analyzer_1.FlowrAnalyzer, 'addRequest')} method.
|
|
@@ -906,7 +906,7 @@ Let's start by looking at the properties of the dataflow information object: ${O
|
|
|
906
906
|
|
|
907
907
|
${(() => {
|
|
908
908
|
/* this includes the meta field for timing and the quick CFG in order to enable re-use and improve performance */
|
|
909
|
-
(0, assert_1.guard)(Object.keys(result).length ===
|
|
909
|
+
(0, assert_1.guard)(Object.keys(result).length === 10, () => 'Update Dataflow Documentation! (Keys: ' + Object.keys(result).join(', ') + ')');
|
|
910
910
|
return '';
|
|
911
911
|
})()}
|
|
912
912
|
|
package/package.json
CHANGED
|
@@ -41,14 +41,19 @@ function makeReport(collector) {
|
|
|
41
41
|
function isSubCallQuery(query) {
|
|
42
42
|
return 'linkTo' in query && query.linkTo !== undefined;
|
|
43
43
|
}
|
|
44
|
-
function exactCallNameRegex(name) {
|
|
45
|
-
return new RegExp(`^(${name})$`);
|
|
46
|
-
}
|
|
47
44
|
/**
|
|
48
45
|
*
|
|
49
46
|
*/
|
|
50
47
|
function promoteCallName(callName, exact = false) {
|
|
51
|
-
|
|
48
|
+
if (Array.isArray(callName)) {
|
|
49
|
+
return new Set(callName);
|
|
50
|
+
}
|
|
51
|
+
else if (exact) {
|
|
52
|
+
return new Set([typeof callName === 'string' ? callName : callName.source]);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return new RegExp(callName);
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
58
|
function promoteQueryCallNames(queries) {
|
|
54
59
|
let requiresCfg = false;
|
package/util/version.js
CHANGED
|
@@ -6,7 +6,7 @@ exports.printVersionInformation = printVersionInformation;
|
|
|
6
6
|
const semver_1 = require("semver");
|
|
7
7
|
const assert_1 = require("./assert");
|
|
8
8
|
// this is automatically replaced with the current version by release-it
|
|
9
|
-
const version = '2.8.
|
|
9
|
+
const version = '2.8.6';
|
|
10
10
|
/**
|
|
11
11
|
* Retrieves the current flowR version as a new {@link SemVer} object.
|
|
12
12
|
*/
|