@eagleoutice/flowr 2.4.8 → 2.6.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/README.md +66 -45
- package/benchmark/slicer.js +1 -1
- package/benchmark/summarizer/second-phase/graph.js +2 -2
- package/cli/flowr.js +3 -29
- package/cli/repl/commands/repl-cfg.d.ts +5 -5
- package/cli/repl/commands/repl-cfg.js +21 -22
- package/cli/repl/commands/repl-commands.d.ts +3 -3
- package/cli/repl/commands/repl-commands.js +2 -0
- package/cli/repl/commands/repl-dataflow.d.ts +5 -5
- package/cli/repl/commands/repl-dataflow.js +27 -30
- package/cli/repl/commands/repl-execute.js +1 -0
- package/cli/repl/commands/repl-lineage.js +1 -0
- package/cli/repl/commands/repl-main.d.ts +34 -3
- package/cli/repl/commands/repl-normalize.d.ts +3 -3
- package/cli/repl/commands/repl-normalize.js +15 -19
- package/cli/repl/commands/repl-parse.d.ts +2 -2
- package/cli/repl/commands/repl-parse.js +13 -8
- package/cli/repl/commands/repl-query.d.ts +3 -3
- package/cli/repl/commands/repl-query.js +29 -19
- package/cli/repl/commands/repl-quit.js +1 -0
- package/cli/repl/commands/repl-version.js +1 -0
- package/cli/repl/core.d.ts +4 -1
- package/cli/repl/core.js +21 -1
- package/cli/repl/server/connection.d.ts +7 -3
- package/cli/repl/server/connection.js +40 -48
- package/cli/repl/server/messages/message-slice.d.ts +1 -1
- package/cli/slicer-app.js +8 -3
- package/config.d.ts +1 -1
- package/config.js +4 -1
- package/control-flow/extract-cfg.d.ts +1 -1
- package/control-flow/extract-cfg.js +1 -1
- package/core/pipeline-executor.d.ts +5 -0
- package/core/pipeline-executor.js +5 -0
- package/core/steps/pipeline/create-pipeline.js +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +42 -42
- package/core/steps/pipeline/default-pipelines.js +4 -1
- package/dataflow/graph/dataflowgraph-builder.d.ts +11 -12
- package/dataflow/graph/dataflowgraph-builder.js +6 -6
- package/documentation/doc-util/doc-query.d.ts +3 -6
- package/documentation/doc-util/doc-query.js +5 -17
- package/documentation/doc-util/doc-search.js +7 -10
- package/documentation/doc-util/doc-structure.d.ts +4 -0
- package/documentation/doc-util/doc-structure.js +28 -0
- package/documentation/doc-util/doc-types.d.ts +5 -1
- package/documentation/doc-util/doc-types.js +29 -3
- package/documentation/print-analyzer-wiki.d.ts +1 -0
- package/documentation/print-analyzer-wiki.js +137 -0
- package/documentation/print-core-wiki.d.ts +2 -1
- package/documentation/print-core-wiki.js +58 -4
- package/documentation/print-dataflow-graph-wiki.js +15 -22
- package/documentation/print-interface-wiki.js +18 -1
- package/documentation/print-linter-wiki.js +5 -1
- package/documentation/print-linting-and-testing-wiki.js +4 -0
- package/documentation/print-normalized-ast-wiki.js +6 -8
- package/documentation/print-readme.js +6 -0
- package/engines.d.ts +9 -0
- package/engines.js +38 -0
- package/linter/linter-executor.d.ts +2 -8
- package/linter/linter-executor.js +9 -4
- package/linter/linter-format.d.ts +8 -9
- package/linter/linter-rules.d.ts +57 -15
- package/linter/linter-rules.js +2 -0
- package/linter/rules/absolute-path.d.ts +1 -0
- package/linter/rules/dataframe-access-validation.d.ts +4 -3
- package/linter/rules/dataframe-access-validation.js +7 -4
- package/linter/rules/dead-code.d.ts +2 -1
- package/linter/rules/deprecated-functions.d.ts +15 -28
- package/linter/rules/deprecated-functions.js +5 -43
- package/linter/rules/file-path-validity.d.ts +2 -1
- package/linter/rules/file-path-validity.js +1 -1
- package/linter/rules/function-finder-util.d.ts +51 -0
- package/linter/rules/function-finder-util.js +77 -0
- package/linter/rules/naming-convention.d.ts +2 -1
- package/linter/rules/network-functions.d.ts +40 -0
- package/linter/rules/network-functions.js +24 -0
- package/linter/rules/seeded-randomness.d.ts +2 -1
- package/linter/rules/unused-definition.d.ts +2 -1
- package/linter/rules/useless-loop.d.ts +3 -2
- package/linter/rules/useless-loop.js +4 -6
- package/package.json +5 -1
- package/project/cache/flowr-analyzer-cache.d.ts +93 -0
- package/project/cache/flowr-analyzer-cache.js +156 -0
- package/project/cache/flowr-cache.d.ts +28 -0
- package/project/cache/flowr-cache.js +49 -0
- package/project/context/abstract-flowr-analyzer-context.d.ts +35 -0
- package/project/context/abstract-flowr-analyzer-context.js +46 -0
- package/project/context/flowr-analyzer-context.d.ts +48 -0
- package/project/context/flowr-analyzer-context.js +47 -0
- package/project/context/flowr-analyzer-dependencies-context.d.ts +38 -0
- package/project/context/flowr-analyzer-dependencies-context.js +39 -0
- package/project/context/flowr-analyzer-files-context.d.ts +86 -0
- package/project/context/flowr-analyzer-files-context.js +130 -0
- package/project/context/flowr-analyzer-loading-order-context.d.ts +76 -0
- package/project/context/flowr-analyzer-loading-order-context.js +90 -0
- package/project/context/flowr-file.d.ts +89 -0
- package/project/context/flowr-file.js +78 -0
- package/project/flowr-analyzer-builder.d.ts +106 -0
- package/project/flowr-analyzer-builder.js +197 -0
- package/project/flowr-analyzer.d.ts +125 -0
- package/project/flowr-analyzer.js +81 -0
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +17 -0
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +28 -0
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +21 -0
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +34 -0
- package/project/plugins/file-plugins/flowr-description-file.d.ts +24 -0
- package/project/plugins/file-plugins/flowr-description-file.js +38 -0
- package/project/plugins/flowr-analyzer-plugin.d.ts +90 -0
- package/project/plugins/flowr-analyzer-plugin.js +82 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.d.ts +14 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +56 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-plugin.d.ts +13 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-plugin.js +33 -0
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.d.ts +14 -0
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +41 -0
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-plugin.d.ts +10 -0
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-plugin.js +29 -0
- package/project/plugins/package-version-plugins/package.d.ts +15 -0
- package/project/plugins/package-version-plugins/package.js +56 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +15 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +44 -0
- package/queries/base-query-format.d.ts +2 -8
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +1 -1
- package/queries/catalog/call-context-query/call-context-query-executor.js +20 -13
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +2 -3
- package/queries/catalog/call-context-query/call-context-query-format.js +2 -2
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +1 -1
- package/queries/catalog/cluster-query/cluster-query-executor.js +2 -2
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -54
- package/queries/catalog/cluster-query/cluster-query-format.js +2 -2
- package/queries/catalog/config-query/config-query-executor.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.js +5 -5
- package/queries/catalog/config-query/config-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-format.js +1 -1
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +1 -1
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +2 -3
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +1 -54
- package/queries/catalog/control-flow-query/control-flow-query-format.js +2 -2
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +1 -1
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +2 -2
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -54
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.js +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +2 -2
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -54
- package/queries/catalog/dataflow-query/dataflow-query-format.js +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +19 -12
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +7 -56
- package/queries/catalog/dependencies-query/dependencies-query-format.js +7 -4
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +4 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +1 -54
- package/queries/catalog/df-shape-query/df-shape-query-format.js +1 -1
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +1 -1
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +2 -1
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -54
- package/queries/catalog/happens-before-query/happens-before-query-format.js +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.js +2 -2
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -54
- package/queries/catalog/id-map-query/id-map-query-format.js +2 -2
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +1 -1
- package/queries/catalog/lineage-query/lineage-query-executor.js +2 -2
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +1 -54
- package/queries/catalog/lineage-query/lineage-query-format.js +1 -1
- package/queries/catalog/linter-query/linter-query-executor.d.ts +1 -1
- package/queries/catalog/linter-query/linter-query-executor.js +2 -3
- package/queries/catalog/linter-query/linter-query-format.d.ts +1 -54
- package/queries/catalog/linter-query/linter-query-format.js +1 -1
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +1 -1
- package/queries/catalog/location-map-query/location-map-query-executor.js +3 -2
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +1 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +1 -1
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +1 -1
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +2 -2
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -54
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.js +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +2 -2
- package/queries/catalog/origin-query/origin-query-executor.js +3 -3
- package/queries/catalog/origin-query/origin-query-format.d.ts +1 -54
- package/queries/catalog/origin-query/origin-query-format.js +1 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +1 -1
- package/queries/catalog/project-query/project-query-executor.js +2 -2
- package/queries/catalog/project-query/project-query-format.d.ts +1 -54
- package/queries/catalog/project-query/project-query-format.js +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +4 -2
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +1 -54
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +1 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +1 -1
- package/queries/catalog/search-query/search-query-executor.js +3 -3
- package/queries/catalog/search-query/search-query-format.d.ts +1 -54
- package/queries/catalog/search-query/search-query-format.js +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +3 -3
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +1 -54
- package/queries/catalog/static-slice-query/static-slice-query-format.js +1 -1
- package/queries/query-print.d.ts +4 -4
- package/queries/query-print.js +12 -12
- package/queries/query.d.ts +29 -885
- package/queries/query.js +1 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +1 -1
- package/r-bridge/retriever.d.ts +15 -2
- package/r-bridge/retriever.js +15 -5
- package/search/flowr-search-executor.d.ts +3 -5
- package/search/flowr-search-executor.js +6 -4
- package/search/flowr-search-filters.d.ts +12 -6
- package/search/flowr-search-filters.js +1 -1
- package/search/flowr-search.d.ts +5 -16
- package/search/flowr-search.js +14 -5
- package/search/search-executor/search-enrichers.d.ts +37 -36
- package/search/search-executor/search-enrichers.js +4 -4
- package/search/search-executor/search-generators.d.ts +12 -12
- package/search/search-executor/search-generators.js +27 -19
- package/search/search-executor/search-mappers.d.ts +5 -5
- package/search/search-executor/search-transformer.d.ts +17 -17
- package/search/search-executor/search-transformer.js +14 -7
- package/util/collections/arrays.d.ts +1 -0
- package/util/collections/arrays.js +15 -0
- package/util/collections/objectmap.d.ts +17 -0
- package/util/collections/objectmap.js +28 -0
- package/util/containers.d.ts +0 -1
- package/util/containers.js +0 -1
- package/util/files.d.ts +17 -0
- package/util/files.js +65 -0
- package/util/formats/adapter-format.d.ts +6 -0
- package/util/formats/adapter-format.js +3 -0
- package/util/formats/adapter.d.ts +18 -0
- package/util/formats/adapter.js +49 -0
- package/util/formats/adapters/r-adapter.d.ts +4 -0
- package/util/formats/adapters/r-adapter.js +7 -0
- package/util/formats/adapters/rmd-adapter.d.ts +26 -0
- package/util/formats/adapters/rmd-adapter.js +91 -0
- 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.5.0, R v4.5.0 (r-shell engine)
|
|
28
28
|
R> :query @linter "read.csv(\"/root/x.txt\")"
|
|
29
29
|
```
|
|
30
30
|
|
|
@@ -33,30 +33,36 @@ It offers a wide variety of features, for example:
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
```text
|
|
36
|
-
Query: [;1mlinter[0m (
|
|
36
|
+
Query: [;1mlinter[0m (14 ms)
|
|
37
37
|
╰ **Deprecated Functions** (deprecated-functions):
|
|
38
|
-
╰
|
|
38
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
39
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
39
40
|
╰ **File Path Validity** (file-path-validity):
|
|
40
|
-
╰
|
|
41
|
-
╰ Path `/root/x.txt` at 1.1-23
|
|
42
|
-
╰ _Metadata_: <code>{"totalReads":1,"totalUnknown":0,"totalWritesBeforeAlways":0,"totalValid":0,"searchTimeMs":1,"processTimeMs":0}</code>
|
|
41
|
+
╰ Error during execution of Rule: Cannot read properties of undefined (reading 'library')
|
|
43
42
|
╰ **Seeded Randomness** (seeded-randomness):
|
|
44
|
-
╰
|
|
43
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
44
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
45
45
|
╰ **Absolute Paths** (absolute-file-paths):
|
|
46
|
-
╰
|
|
47
|
-
╰ Path `/root/x.txt` at 1.1-23
|
|
48
|
-
╰ _Metadata_: <code>{"totalConsidered":1,"totalUnknown":0,"searchTimeMs":1,"processTimeMs":0}</code>
|
|
46
|
+
╰ Error during execution of Rule: Cannot read properties of undefined (reading 'library')
|
|
49
47
|
╰ **Unused Definitions** (unused-definitions):
|
|
50
|
-
╰
|
|
48
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
49
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
51
50
|
╰ **Naming Convention** (naming-convention):
|
|
52
|
-
╰
|
|
51
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
52
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
53
|
+
╰ **Network Functions** (network-functions):
|
|
54
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
55
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
53
56
|
╰ **Dataframe Access Validation** (dataframe-access-validation):
|
|
54
|
-
╰
|
|
57
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
58
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
55
59
|
╰ **Dead Code** (dead-code):
|
|
56
|
-
╰
|
|
60
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
61
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
57
62
|
╰ **Useless Loops** (useless-loop):
|
|
58
|
-
╰
|
|
59
|
-
|
|
63
|
+
╰ Error during execution of Rule: unable to parse R code (see the log for more information) for request {"request":"text","content":"@linter read.csv(\"/root/x.txt\")"}}
|
|
64
|
+
Report a Bug: https://github.com/flowr-analysis/flowr/issues/new?body=%3C!%2D%2D%20Please%20describe%20your%20issue%20in%20more%20detail%20below!%20%2D%2D%3E%0A%0A%0A%3C!%2D%2D%20Automatically%20generated%20issue%20metadata%2C%20please%20do%20not%20edit%20or%20delete%20content%20below%20this%20line%20%2D%2D%3E%0A%2D%2D%2D%0A%0AflowR%20version%3A%202.5.0%0Anode%20version%3A%20v22.14.0%0Anode%20arch%3A%20x64%0Anode%20platform%3A%20linux%0Amessage%3A%20%60unable%20to%20parse%20R%20code%20%28see%20the%20log%20for%20more%20information%29%20for%20request%20%7B%22request%22%3A%22text%22%2C%22content%22%3A%22%40linter%20read.csv%28%5C%22%2Froot%2Fx.txt%5C%22%29%22%7D%7D%60%0Astack%20trace%3A%0A%60%60%60%0A%20%20%20%20at%20guard%20%28%3C%3E%2Fsrc%2Futil%2Fassert.ts%3A75%3A9%29%0A%20%20%20%20at%20guardRetrievedOutput%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A210%3A7%29%0A%20%20%20%20at%20%2Fhome%2Frunner%2Fwork%2Fflowr%2Fflowr%2Fsrc%2Fr%2Dbridge%2Fretriever.ts%3A174%3A4%0A%20%20%20%20at%20processTicksAndRejections%20%28node%3Ainternal%2Fprocess%2Ftask_queues%3A105%3A5%29%0A%20%20%20%20at%20async%20Object.parseRequests%20%5Bas%20processor%5D%20%28%3C%3E%2Fsrc%2Fr%2Dbridge%2Fparser.ts%3A58%3A18%29%0A%20%20%20%20at%20async%20PipelineExecutor.nextStep%20%28%3C%3E%2Fsrc%2Fcore%2Fpipeline%2Dexecutor.ts%3A205%3A25%29%0A%20%20%20%20at%20async%20FlowrAnalyzerCache.runTapeUntil%20%28%3C%3E%2Fsrc%2Fproject%2Fcache%2Fflowr%2Danalyzer%2Dcache.ts%3A100%3A4%29%0A%20%20%20%20at%20async%20getAllNodes%20%28%3C%3E%2Fsrc%2Fsearch%2Fsearch%2Dexecutor%2Fsearch%2Dgenerators.ts%3A47%3A20%29%0A%60%60%60%0A%0A%2D%2D%2D%0A%09
|
|
65
|
+
[;3mAll queries together required ≈14 ms (1ms accuracy, total 17 ms)[0m[0m
|
|
60
66
|
```
|
|
61
67
|
|
|
62
68
|
|
|
@@ -78,34 +84,36 @@ It offers a wide variety of features, for example:
|
|
|
78
84
|
|
|
79
85
|
_Results (prettified and summarized):_
|
|
80
86
|
|
|
81
|
-
Query: **linter** (
|
|
87
|
+
Query: **linter** (210 ms)\
|
|
82
88
|
╰ **Deprecated Functions** (deprecated-functions):\
|
|
83
|
-
╰ _Metadata_: <code>{"
|
|
89
|
+
╰ _Metadata_: <code>{"totalCalls":0,"totalFunctionDefinitions":0,"searchTimeMs":196,"processTimeMs":0}</code>\
|
|
84
90
|
╰ **File Path Validity** (file-path-validity):\
|
|
85
91
|
╰ certain:\
|
|
86
92
|
╰ Path `/root/x.txt` at 1.1-23\
|
|
87
|
-
╰ _Metadata_: <code>{"totalReads":1,"totalUnknown":0,"totalWritesBeforeAlways":0,"totalValid":0,"searchTimeMs":
|
|
93
|
+
╰ _Metadata_: <code>{"totalReads":1,"totalUnknown":0,"totalWritesBeforeAlways":0,"totalValid":0,"searchTimeMs":5,"processTimeMs":1}</code>\
|
|
88
94
|
╰ **Seeded Randomness** (seeded-randomness):\
|
|
89
|
-
╰ _Metadata_: <code>{"consumerCalls":0,"callsWithFunctionProducers":0,"callsWithAssignmentProducers":0,"callsWithNonConstantProducers":0,"searchTimeMs":0,"processTimeMs":
|
|
95
|
+
╰ _Metadata_: <code>{"consumerCalls":0,"callsWithFunctionProducers":0,"callsWithAssignmentProducers":0,"callsWithNonConstantProducers":0,"searchTimeMs":0,"processTimeMs":0}</code>\
|
|
90
96
|
╰ **Absolute Paths** (absolute-file-paths):\
|
|
91
97
|
╰ certain:\
|
|
92
98
|
╰ Path `/root/x.txt` at 1.1-23\
|
|
93
|
-
╰ _Metadata_: <code>{"totalConsidered":1,"totalUnknown":0,"searchTimeMs":
|
|
99
|
+
╰ _Metadata_: <code>{"totalConsidered":1,"totalUnknown":0,"searchTimeMs":3,"processTimeMs":0}</code>\
|
|
94
100
|
╰ **Unused Definitions** (unused-definitions):\
|
|
95
101
|
╰ _Metadata_: <code>{"totalConsidered":0,"searchTimeMs":0,"processTimeMs":0}</code>\
|
|
96
102
|
╰ **Naming Convention** (naming-convention):\
|
|
97
103
|
╰ _Metadata_: <code>{"numMatches":0,"numBreak":0,"searchTimeMs":0,"processTimeMs":0}</code>\
|
|
104
|
+
╰ **Network Functions** (network-functions):\
|
|
105
|
+
╰ _Metadata_: <code>{"totalCalls":0,"totalFunctionDefinitions":0,"searchTimeMs":1,"processTimeMs":0}</code>\
|
|
98
106
|
╰ **Dataframe Access Validation** (dataframe-access-validation):\
|
|
99
|
-
╰ _Metadata_: <code>{"numOperations":0,"numAccesses":0,"totalAccessed":0,"searchTimeMs":0,"processTimeMs":
|
|
107
|
+
╰ _Metadata_: <code>{"numOperations":0,"numAccesses":0,"totalAccessed":0,"searchTimeMs":0,"processTimeMs":3}</code>\
|
|
100
108
|
╰ **Dead Code** (dead-code):\
|
|
101
|
-
╰ _Metadata_: <code>{"consideredNodes":5,"searchTimeMs":
|
|
109
|
+
╰ _Metadata_: <code>{"consideredNodes":5,"searchTimeMs":0,"processTimeMs":1}</code>\
|
|
102
110
|
╰ **Useless Loops** (useless-loop):\
|
|
103
|
-
╰ _Metadata_: <code>{"numOfUselessLoops":0,"searchTimeMs":0,"processTimeMs":
|
|
104
|
-
_All queries together required ≈
|
|
111
|
+
╰ _Metadata_: <code>{"numOfUselessLoops":0,"searchTimeMs":0,"processTimeMs":0}</code>\
|
|
112
|
+
_All queries together required ≈211 ms (1ms accuracy, total 211 ms)_
|
|
105
113
|
|
|
106
114
|
<details> <summary style="color:gray">Show Detailed Results as Json</summary>
|
|
107
115
|
|
|
108
|
-
The analysis required
|
|
116
|
+
The analysis required _211.4 ms_ (including parsing and normalization and the query) within the generation environment.
|
|
109
117
|
|
|
110
118
|
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.
|
|
111
119
|
Please consult the [Interface](https://github.com/flowr-analysis/flowr/wiki/Interface) wiki page for more information on how to get those.
|
|
@@ -120,9 +128,9 @@ It offers a wide variety of features, for example:
|
|
|
120
128
|
"deprecated-functions": {
|
|
121
129
|
"results": [],
|
|
122
130
|
".meta": {
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"searchTimeMs":
|
|
131
|
+
"totalCalls": 0,
|
|
132
|
+
"totalFunctionDefinitions": 0,
|
|
133
|
+
"searchTimeMs": 196,
|
|
126
134
|
"processTimeMs": 0
|
|
127
135
|
}
|
|
128
136
|
},
|
|
@@ -144,7 +152,7 @@ It offers a wide variety of features, for example:
|
|
|
144
152
|
"totalUnknown": 0,
|
|
145
153
|
"totalWritesBeforeAlways": 0,
|
|
146
154
|
"totalValid": 0,
|
|
147
|
-
"searchTimeMs":
|
|
155
|
+
"searchTimeMs": 5,
|
|
148
156
|
"processTimeMs": 1
|
|
149
157
|
}
|
|
150
158
|
},
|
|
@@ -156,7 +164,7 @@ It offers a wide variety of features, for example:
|
|
|
156
164
|
"callsWithAssignmentProducers": 0,
|
|
157
165
|
"callsWithNonConstantProducers": 0,
|
|
158
166
|
"searchTimeMs": 0,
|
|
159
|
-
"processTimeMs":
|
|
167
|
+
"processTimeMs": 0
|
|
160
168
|
}
|
|
161
169
|
},
|
|
162
170
|
"absolute-file-paths": {
|
|
@@ -175,8 +183,8 @@ It offers a wide variety of features, for example:
|
|
|
175
183
|
".meta": {
|
|
176
184
|
"totalConsidered": 1,
|
|
177
185
|
"totalUnknown": 0,
|
|
178
|
-
"searchTimeMs":
|
|
179
|
-
"processTimeMs":
|
|
186
|
+
"searchTimeMs": 3,
|
|
187
|
+
"processTimeMs": 0
|
|
180
188
|
}
|
|
181
189
|
},
|
|
182
190
|
"unused-definitions": {
|
|
@@ -196,6 +204,15 @@ It offers a wide variety of features, for example:
|
|
|
196
204
|
"processTimeMs": 0
|
|
197
205
|
}
|
|
198
206
|
},
|
|
207
|
+
"network-functions": {
|
|
208
|
+
"results": [],
|
|
209
|
+
".meta": {
|
|
210
|
+
"totalCalls": 0,
|
|
211
|
+
"totalFunctionDefinitions": 0,
|
|
212
|
+
"searchTimeMs": 1,
|
|
213
|
+
"processTimeMs": 0
|
|
214
|
+
}
|
|
215
|
+
},
|
|
199
216
|
"dataframe-access-validation": {
|
|
200
217
|
"results": [],
|
|
201
218
|
".meta": {
|
|
@@ -203,15 +220,15 @@ It offers a wide variety of features, for example:
|
|
|
203
220
|
"numAccesses": 0,
|
|
204
221
|
"totalAccessed": 0,
|
|
205
222
|
"searchTimeMs": 0,
|
|
206
|
-
"processTimeMs":
|
|
223
|
+
"processTimeMs": 3
|
|
207
224
|
}
|
|
208
225
|
},
|
|
209
226
|
"dead-code": {
|
|
210
227
|
"results": [],
|
|
211
228
|
".meta": {
|
|
212
229
|
"consideredNodes": 5,
|
|
213
|
-
"searchTimeMs":
|
|
214
|
-
"processTimeMs":
|
|
230
|
+
"searchTimeMs": 0,
|
|
231
|
+
"processTimeMs": 1
|
|
215
232
|
}
|
|
216
233
|
},
|
|
217
234
|
"useless-loop": {
|
|
@@ -219,16 +236,16 @@ It offers a wide variety of features, for example:
|
|
|
219
236
|
".meta": {
|
|
220
237
|
"numOfUselessLoops": 0,
|
|
221
238
|
"searchTimeMs": 0,
|
|
222
|
-
"processTimeMs":
|
|
239
|
+
"processTimeMs": 0
|
|
223
240
|
}
|
|
224
241
|
}
|
|
225
242
|
},
|
|
226
243
|
".meta": {
|
|
227
|
-
"timing":
|
|
244
|
+
"timing": 210
|
|
228
245
|
}
|
|
229
246
|
},
|
|
230
247
|
".meta": {
|
|
231
|
-
"timing":
|
|
248
|
+
"timing": 211
|
|
232
249
|
}
|
|
233
250
|
}
|
|
234
251
|
```
|
|
@@ -241,8 +258,6 @@ It offers a wide variety of features, for example:
|
|
|
241
258
|
|
|
242
259
|
|
|
243
260
|
|
|
244
|
-
|
|
245
|
-
|
|
246
261
|
|
|
247
262
|
|
|
248
263
|
|
|
@@ -295,7 +310,7 @@ It offers a wide variety of features, for example:
|
|
|
295
310
|
|
|
296
311
|
```shell
|
|
297
312
|
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
|
|
298
|
-
flowR repl using flowR v2.
|
|
313
|
+
flowR repl using flowR v2.5.0, R v4.5.0 (r-shell engine)
|
|
299
314
|
R> :slicer test/testfiles/example.R --criterion "11@sum"
|
|
300
315
|
```
|
|
301
316
|
|
|
@@ -342,7 +357,7 @@ It offers a wide variety of features, for example:
|
|
|
342
357
|
|
|
343
358
|
|
|
344
359
|
* 🚀 **fast data- and control-flow graphs**\
|
|
345
|
-
Within just <i><span title="This measurement is automatically fetched from the latest benchmark!">
|
|
360
|
+
Within just <i><span title="This measurement is automatically fetched from the latest benchmark!">136.9 ms</span></i> (as of Sep 23, 2025),
|
|
346
361
|
_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,
|
|
347
362
|
and consult the [wiki pages](https://github.com/flowr-analysis/flowr/wiki/Dataflow-Graph) for more details on the dataflow graph.
|
|
348
363
|
|
|
@@ -378,7 +393,7 @@ It offers a wide variety of features, for example:
|
|
|
378
393
|
|
|
379
394
|
```shell
|
|
380
395
|
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
|
|
381
|
-
flowR repl using flowR v2.
|
|
396
|
+
flowR repl using flowR v2.5.0, R v4.5.0 (r-shell engine)
|
|
382
397
|
R> :dataflow* test/testfiles/example.R
|
|
383
398
|
```
|
|
384
399
|
|
|
@@ -683,7 +698,7 @@ It offers a wide variety of features, for example:
|
|
|
683
698
|
```
|
|
684
699
|
|
|
685
700
|
|
|
686
|
-
(The analysis required _14.
|
|
701
|
+
(The analysis required _14.4 ms_ (including parse and normalize, using the [r-shell](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
|
|
687
702
|
|
|
688
703
|
|
|
689
704
|
|
|
@@ -728,6 +743,12 @@ You can enter <span title="Description (Repl Command): Show help information (al
|
|
|
728
743
|
|
|
729
744
|

|
|
730
745
|
|
|
746
|
+
If you want to use the same commands:
|
|
747
|
+
|
|
748
|
+
1. First this runs `docker run -it --rm eagleoutice/flowr` in a terminal to start the REPL.
|
|
749
|
+
2. In the REPL, it runs `:slicer -c '11@prod' demo.R --diff` to slice the example file `demo.R` for the print statement in line 11.
|
|
750
|
+
Please note that the `11` refers to the 11th line number to slice for!
|
|
751
|
+
|
|
731
752
|
</details>
|
|
732
753
|
|
|
733
754
|
## 📜 More Information
|
package/benchmark/slicer.js
CHANGED
|
@@ -9,7 +9,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.BenchmarkSlicer = exports.benchmarkLogger = void 0;
|
|
11
11
|
const stopwatch_1 = require("./stopwatch");
|
|
12
|
-
const fs_1 = __importDefault(require("fs"));
|
|
13
12
|
const seedrandom_1 = __importDefault(require("seedrandom"));
|
|
14
13
|
const log_1 = require("../util/log");
|
|
15
14
|
const assert_1 = require("../util/assert");
|
|
@@ -30,6 +29,7 @@ const extract_cfg_1 = require("../control-flow/extract-cfg");
|
|
|
30
29
|
const absint_info_1 = require("../abstract-interpretation/data-frame/absint-info");
|
|
31
30
|
const domain_1 = require("../abstract-interpretation/data-frame/domain");
|
|
32
31
|
const shape_inference_1 = require("../abstract-interpretation/data-frame/shape-inference");
|
|
32
|
+
const fs_1 = __importDefault(require("fs"));
|
|
33
33
|
/**
|
|
34
34
|
* The logger to be used for benchmarking as a global object.
|
|
35
35
|
*/
|
|
@@ -19,7 +19,7 @@ function writeGraphOutput(ultimate, outputGraphPath) {
|
|
|
19
19
|
name: pointName[0].toUpperCase() + pointName.slice(1),
|
|
20
20
|
unit: 'ms',
|
|
21
21
|
value: Number(measurement.mean / 1e6),
|
|
22
|
-
range: Number(measurement.std / 1e6),
|
|
22
|
+
range: String(Number(measurement.std / 1e6)),
|
|
23
23
|
extra: `median: ${(measurement.median / 1e6).toFixed(2)}ms`
|
|
24
24
|
});
|
|
25
25
|
}
|
|
@@ -51,7 +51,7 @@ function writeGraphOutput(ultimate, outputGraphPath) {
|
|
|
51
51
|
name: 'memory (df-graph)',
|
|
52
52
|
unit: 'KiB',
|
|
53
53
|
value: ultimate.dataflow.sizeOfObject.mean / 1024,
|
|
54
|
-
range: ultimate.dataflow.sizeOfObject.std / 1024,
|
|
54
|
+
range: String(ultimate.dataflow.sizeOfObject.std / 1024),
|
|
55
55
|
extra: `median: ${(ultimate.dataflow.sizeOfObject.median / 1024).toFixed(2)}`
|
|
56
56
|
});
|
|
57
57
|
// write the output file
|
package/cli/flowr.js
CHANGED
|
@@ -14,16 +14,15 @@ const command_line_args_1 = __importDefault(require("command-line-args"));
|
|
|
14
14
|
const config_1 = require("../config");
|
|
15
15
|
const assert_1 = require("../util/assert");
|
|
16
16
|
const scripts_info_1 = require("./common/scripts-info");
|
|
17
|
-
const shell_1 = require("../r-bridge/shell");
|
|
18
17
|
const execute_1 = require("./repl/execute");
|
|
19
18
|
const repl_main_1 = require("./repl/commands/repl-main");
|
|
20
19
|
const core_1 = require("./repl/core");
|
|
21
20
|
const repl_version_1 = require("./repl/commands/repl-version");
|
|
22
21
|
const print_version_1 = require("./repl/print-version");
|
|
23
22
|
const flowr_main_options_1 = require("./flowr-main-options");
|
|
24
|
-
const tree_sitter_executor_1 = require("../r-bridge/lang-4.x/tree-sitter/tree-sitter-executor");
|
|
25
23
|
const fs_1 = __importDefault(require("fs"));
|
|
26
24
|
const path_1 = __importDefault(require("path"));
|
|
25
|
+
const engines_1 = require("../engines");
|
|
27
26
|
exports.toolName = 'flowr';
|
|
28
27
|
exports.optionHelp = [
|
|
29
28
|
{
|
|
@@ -92,31 +91,6 @@ function createConfig() {
|
|
|
92
91
|
});
|
|
93
92
|
return config;
|
|
94
93
|
}
|
|
95
|
-
async function retrieveEngineInstances(config) {
|
|
96
|
-
const engines = {};
|
|
97
|
-
if ((0, config_1.getEngineConfig)(config, 'r-shell')) {
|
|
98
|
-
// we keep an active shell session to allow other parse investigations :)
|
|
99
|
-
engines['r-shell'] = new shell_1.RShell((0, config_1.getEngineConfig)(config, 'r-shell'), {
|
|
100
|
-
revive: 2 /* RShellReviveOptions.Always */,
|
|
101
|
-
onRevive: (code, signal) => {
|
|
102
|
-
const signalText = signal == null ? '' : ` and signal ${signal}`;
|
|
103
|
-
console.log(ansi_1.formatter.format(`R process exited with code ${code}${signalText}. Restarting...`, { color: 5 /* Colors.Magenta */, effect: ansi_1.ColorEffect.Foreground }));
|
|
104
|
-
console.log((0, ansi_1.italic)(`If you want to exit, press either Ctrl+C twice, or enter ${(0, ansi_1.bold)(':quit')}`));
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
if ((0, config_1.getEngineConfig)(config, 'tree-sitter')) {
|
|
109
|
-
await tree_sitter_executor_1.TreeSitterExecutor.initTreeSitter((0, config_1.getEngineConfig)(config, 'tree-sitter'));
|
|
110
|
-
engines['tree-sitter'] = new tree_sitter_executor_1.TreeSitterExecutor();
|
|
111
|
-
}
|
|
112
|
-
let defaultEngine = config.defaultEngine;
|
|
113
|
-
if (!defaultEngine || !engines[defaultEngine]) {
|
|
114
|
-
// if a default engine isn't specified, we just take the first one we have
|
|
115
|
-
defaultEngine = Object.keys(engines)[0];
|
|
116
|
-
}
|
|
117
|
-
log_1.log.info(`Using engines ${Object.keys(engines).join(', ')} with default ${defaultEngine}`);
|
|
118
|
-
return { engines, default: defaultEngine };
|
|
119
|
-
}
|
|
120
94
|
function hookSignalHandlers(engines) {
|
|
121
95
|
const end = () => {
|
|
122
96
|
if (options.execute === undefined) {
|
|
@@ -142,7 +116,7 @@ async function mainRepl() {
|
|
|
142
116
|
console.log((0, command_line_usage_1.default)(exports.optionHelp));
|
|
143
117
|
process.exit(0);
|
|
144
118
|
}
|
|
145
|
-
const engines = await retrieveEngineInstances(config);
|
|
119
|
+
const engines = await (0, engines_1.retrieveEngineInstances)(config);
|
|
146
120
|
const defaultEngine = engines.engines[engines.default];
|
|
147
121
|
if (options.version) {
|
|
148
122
|
for (const engine of Object.values(engines.engines)) {
|
|
@@ -164,7 +138,7 @@ async function mainRepl() {
|
|
|
164
138
|
}
|
|
165
139
|
async function mainServer(backend = new net_1.NetServer()) {
|
|
166
140
|
const config = createConfig();
|
|
167
|
-
const engines = await retrieveEngineInstances(config);
|
|
141
|
+
const engines = await (0, engines_1.retrieveEngineInstances)(config);
|
|
168
142
|
hookSignalHandlers(engines);
|
|
169
143
|
await new server_1.FlowRServer(engines.engines, engines.default, options['r-session-access'], config, backend).start(options.port);
|
|
170
144
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const controlflowCommand:
|
|
3
|
-
export declare const controlflowStarCommand:
|
|
4
|
-
export declare const controlflowBbCommand:
|
|
5
|
-
export declare const controlflowBbStarCommand:
|
|
1
|
+
import type { ReplCodeCommand } from './repl-main';
|
|
2
|
+
export declare const controlflowCommand: ReplCodeCommand;
|
|
3
|
+
export declare const controlflowStarCommand: ReplCodeCommand;
|
|
4
|
+
export declare const controlflowBbCommand: ReplCodeCommand;
|
|
5
|
+
export declare const controlflowBbStarCommand: ReplCodeCommand;
|
|
@@ -34,27 +34,18 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.controlflowBbStarCommand = exports.controlflowBbCommand = exports.controlflowStarCommand = exports.controlflowCommand = void 0;
|
|
37
|
-
const extract_cfg_1 = require("../../../control-flow/extract-cfg");
|
|
38
|
-
const default_pipelines_1 = require("../../../core/steps/pipeline/default-pipelines");
|
|
39
37
|
const retriever_1 = require("../../../r-bridge/retriever");
|
|
40
38
|
const cfg_1 = require("../../../util/mermaid/cfg");
|
|
41
39
|
const ansi_1 = require("../../../util/text/ansi");
|
|
42
40
|
const cfg_simplification_1 = require("../../../control-flow/cfg-simplification");
|
|
43
|
-
|
|
44
|
-
return await (0, default_pipelines_1.createDataflowPipeline)(parser, {
|
|
45
|
-
request: (0, retriever_1.requestFromInput)(remainingLine.trim())
|
|
46
|
-
}, config).allRemainingSteps();
|
|
47
|
-
}
|
|
48
|
-
function handleString(code) {
|
|
49
|
-
return code.startsWith('"') ? JSON.parse(code) : code;
|
|
50
|
-
}
|
|
41
|
+
const core_1 = require("../core");
|
|
51
42
|
function formatInfo(out, type) {
|
|
52
43
|
return out.formatter.format(`Copied ${type} to clipboard.`, { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 3 /* FontStyles.Italic */ });
|
|
53
44
|
}
|
|
54
|
-
async function produceAndPrintCfg(
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const mermaid = cfgConverter(cfg,
|
|
45
|
+
async function produceAndPrintCfg(analyzer, output, simplifications, cfgConverter) {
|
|
46
|
+
const cfg = await analyzer.controlflow([...cfg_simplification_1.DefaultCfgSimplificationOrder, ...simplifications]);
|
|
47
|
+
const normalizedAst = await analyzer.normalize();
|
|
48
|
+
const mermaid = cfgConverter(cfg, normalizedAst);
|
|
58
49
|
output.stdout(mermaid);
|
|
59
50
|
try {
|
|
60
51
|
const clipboard = await Promise.resolve().then(() => __importStar(require('clipboardy')));
|
|
@@ -66,38 +57,46 @@ async function produceAndPrintCfg(shell, remainingLine, output, simplifications,
|
|
|
66
57
|
}
|
|
67
58
|
exports.controlflowCommand = {
|
|
68
59
|
description: `Get mermaid code for the control-flow graph of R code, start with '${retriever_1.fileProtocol}' to indicate a file`,
|
|
60
|
+
usesAnalyzer: true,
|
|
69
61
|
usageExample: ':controlflow',
|
|
70
62
|
aliases: ['cfg', 'cf'],
|
|
71
63
|
script: false,
|
|
72
|
-
|
|
73
|
-
|
|
64
|
+
argsParser: (args) => (0, core_1.handleString)(args),
|
|
65
|
+
fn: async ({ output, analyzer }) => {
|
|
66
|
+
await produceAndPrintCfg(analyzer, output, [], cfg_1.cfgToMermaid);
|
|
74
67
|
}
|
|
75
68
|
};
|
|
76
69
|
exports.controlflowStarCommand = {
|
|
77
70
|
description: 'Returns the URL to mermaid.live',
|
|
71
|
+
usesAnalyzer: true,
|
|
78
72
|
usageExample: ':controlflow*',
|
|
79
73
|
aliases: ['cfg*', 'cf*'],
|
|
80
74
|
script: false,
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
argsParser: (args) => (0, core_1.handleString)(args),
|
|
76
|
+
fn: async ({ output, analyzer }) => {
|
|
77
|
+
await produceAndPrintCfg(analyzer, output, [], cfg_1.cfgToMermaidUrl);
|
|
83
78
|
}
|
|
84
79
|
};
|
|
85
80
|
exports.controlflowBbCommand = {
|
|
86
81
|
description: `Get mermaid code for the control-flow graph with basic blocks, start with '${retriever_1.fileProtocol}' to indicate a file`,
|
|
82
|
+
usesAnalyzer: true,
|
|
87
83
|
usageExample: ':controlflowbb',
|
|
88
84
|
aliases: ['cfgb', 'cfb'],
|
|
89
85
|
script: false,
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
argsParser: (args) => (0, core_1.handleString)(args),
|
|
87
|
+
fn: async ({ output, analyzer }) => {
|
|
88
|
+
await produceAndPrintCfg(analyzer, output, ['to-basic-blocks'], cfg_1.cfgToMermaid);
|
|
92
89
|
}
|
|
93
90
|
};
|
|
94
91
|
exports.controlflowBbStarCommand = {
|
|
95
92
|
description: 'Returns the URL to mermaid.live',
|
|
93
|
+
usesAnalyzer: true,
|
|
96
94
|
usageExample: ':controlflowbb*',
|
|
97
95
|
aliases: ['cfgb*', 'cfb*'],
|
|
98
96
|
script: false,
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
argsParser: (args) => (0, core_1.handleString)(args),
|
|
98
|
+
fn: async ({ output, analyzer }) => {
|
|
99
|
+
await produceAndPrintCfg(analyzer, output, ['to-basic-blocks'], cfg_1.cfgToMermaidUrl);
|
|
101
100
|
}
|
|
102
101
|
};
|
|
103
102
|
//# sourceMappingURL=repl-cfg.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ReplCommand } from './repl-main';
|
|
1
|
+
import type { ReplCodeCommand, ReplCommand } from './repl-main';
|
|
2
2
|
export declare const helpCommand: ReplCommand;
|
|
3
|
-
export declare function getReplCommands(): Record<string, ReplCommand>;
|
|
3
|
+
export declare function getReplCommands(): Record<string, ReplCommand | ReplCodeCommand>;
|
|
4
4
|
/**
|
|
5
5
|
* The names of all commands including their aliases (but without the leading `:`)
|
|
6
6
|
*/
|
|
@@ -9,7 +9,7 @@ export declare function getCommandNames(): string[];
|
|
|
9
9
|
* Get the command for a given command name or alias.
|
|
10
10
|
* @param command - The name of the command (without the leading `:`)
|
|
11
11
|
*/
|
|
12
|
-
export declare function getCommand(command: string): ReplCommand | undefined;
|
|
12
|
+
export declare function getCommand(command: string): ReplCodeCommand | ReplCommand | undefined;
|
|
13
13
|
export declare function asOptionName(argument: string): string;
|
|
14
14
|
export declare function longestCommandName(): number;
|
|
15
15
|
export declare function padCmd<T>(string: T): string;
|
|
@@ -47,6 +47,7 @@ function printCommandHelp(formatter) {
|
|
|
47
47
|
}
|
|
48
48
|
exports.helpCommand = {
|
|
49
49
|
description: 'Show help information',
|
|
50
|
+
usesAnalyzer: false,
|
|
50
51
|
script: false,
|
|
51
52
|
usageExample: ':help',
|
|
52
53
|
aliases: ['h', '?'],
|
|
@@ -113,6 +114,7 @@ function getReplCommands() {
|
|
|
113
114
|
aliases: [],
|
|
114
115
|
script: true,
|
|
115
116
|
usageExample: `:${script} --help`,
|
|
117
|
+
usesAnalyzer: false,
|
|
116
118
|
fn: async ({ output, remainingLine }) => {
|
|
117
119
|
// check if the target *module* exists in the current directory, else try two dirs up, otherwise, fail with a message
|
|
118
120
|
let path = `${__dirname}/${target}`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const dataflowCommand:
|
|
3
|
-
export declare const dataflowStarCommand:
|
|
4
|
-
export declare const dataflowSimplifiedCommand:
|
|
5
|
-
export declare const dataflowSimpleStarCommand:
|
|
1
|
+
import type { ReplCodeCommand } from './repl-main';
|
|
2
|
+
export declare const dataflowCommand: ReplCodeCommand;
|
|
3
|
+
export declare const dataflowStarCommand: ReplCodeCommand;
|
|
4
|
+
export declare const dataflowSimplifiedCommand: ReplCodeCommand;
|
|
5
|
+
export declare const dataflowSimpleStarCommand: ReplCodeCommand;
|