@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.
Files changed (234) hide show
  1. package/README.md +66 -45
  2. package/benchmark/slicer.js +1 -1
  3. package/benchmark/summarizer/second-phase/graph.js +2 -2
  4. package/cli/flowr.js +3 -29
  5. package/cli/repl/commands/repl-cfg.d.ts +5 -5
  6. package/cli/repl/commands/repl-cfg.js +21 -22
  7. package/cli/repl/commands/repl-commands.d.ts +3 -3
  8. package/cli/repl/commands/repl-commands.js +2 -0
  9. package/cli/repl/commands/repl-dataflow.d.ts +5 -5
  10. package/cli/repl/commands/repl-dataflow.js +27 -30
  11. package/cli/repl/commands/repl-execute.js +1 -0
  12. package/cli/repl/commands/repl-lineage.js +1 -0
  13. package/cli/repl/commands/repl-main.d.ts +34 -3
  14. package/cli/repl/commands/repl-normalize.d.ts +3 -3
  15. package/cli/repl/commands/repl-normalize.js +15 -19
  16. package/cli/repl/commands/repl-parse.d.ts +2 -2
  17. package/cli/repl/commands/repl-parse.js +13 -8
  18. package/cli/repl/commands/repl-query.d.ts +3 -3
  19. package/cli/repl/commands/repl-query.js +29 -19
  20. package/cli/repl/commands/repl-quit.js +1 -0
  21. package/cli/repl/commands/repl-version.js +1 -0
  22. package/cli/repl/core.d.ts +4 -1
  23. package/cli/repl/core.js +21 -1
  24. package/cli/repl/server/connection.d.ts +7 -3
  25. package/cli/repl/server/connection.js +40 -48
  26. package/cli/repl/server/messages/message-slice.d.ts +1 -1
  27. package/cli/slicer-app.js +8 -3
  28. package/config.d.ts +1 -1
  29. package/config.js +4 -1
  30. package/control-flow/extract-cfg.d.ts +1 -1
  31. package/control-flow/extract-cfg.js +1 -1
  32. package/core/pipeline-executor.d.ts +5 -0
  33. package/core/pipeline-executor.js +5 -0
  34. package/core/steps/pipeline/create-pipeline.js +1 -1
  35. package/core/steps/pipeline/default-pipelines.d.ts +42 -42
  36. package/core/steps/pipeline/default-pipelines.js +4 -1
  37. package/dataflow/graph/dataflowgraph-builder.d.ts +11 -12
  38. package/dataflow/graph/dataflowgraph-builder.js +6 -6
  39. package/documentation/doc-util/doc-query.d.ts +3 -6
  40. package/documentation/doc-util/doc-query.js +5 -17
  41. package/documentation/doc-util/doc-search.js +7 -10
  42. package/documentation/doc-util/doc-structure.d.ts +4 -0
  43. package/documentation/doc-util/doc-structure.js +28 -0
  44. package/documentation/doc-util/doc-types.d.ts +5 -1
  45. package/documentation/doc-util/doc-types.js +29 -3
  46. package/documentation/print-analyzer-wiki.d.ts +1 -0
  47. package/documentation/print-analyzer-wiki.js +137 -0
  48. package/documentation/print-core-wiki.d.ts +2 -1
  49. package/documentation/print-core-wiki.js +58 -4
  50. package/documentation/print-dataflow-graph-wiki.js +15 -22
  51. package/documentation/print-interface-wiki.js +18 -1
  52. package/documentation/print-linter-wiki.js +5 -1
  53. package/documentation/print-linting-and-testing-wiki.js +4 -0
  54. package/documentation/print-normalized-ast-wiki.js +6 -8
  55. package/documentation/print-readme.js +6 -0
  56. package/engines.d.ts +9 -0
  57. package/engines.js +38 -0
  58. package/linter/linter-executor.d.ts +2 -8
  59. package/linter/linter-executor.js +9 -4
  60. package/linter/linter-format.d.ts +8 -9
  61. package/linter/linter-rules.d.ts +57 -15
  62. package/linter/linter-rules.js +2 -0
  63. package/linter/rules/absolute-path.d.ts +1 -0
  64. package/linter/rules/dataframe-access-validation.d.ts +4 -3
  65. package/linter/rules/dataframe-access-validation.js +7 -4
  66. package/linter/rules/dead-code.d.ts +2 -1
  67. package/linter/rules/deprecated-functions.d.ts +15 -28
  68. package/linter/rules/deprecated-functions.js +5 -43
  69. package/linter/rules/file-path-validity.d.ts +2 -1
  70. package/linter/rules/file-path-validity.js +1 -1
  71. package/linter/rules/function-finder-util.d.ts +51 -0
  72. package/linter/rules/function-finder-util.js +77 -0
  73. package/linter/rules/naming-convention.d.ts +2 -1
  74. package/linter/rules/network-functions.d.ts +40 -0
  75. package/linter/rules/network-functions.js +24 -0
  76. package/linter/rules/seeded-randomness.d.ts +2 -1
  77. package/linter/rules/unused-definition.d.ts +2 -1
  78. package/linter/rules/useless-loop.d.ts +3 -2
  79. package/linter/rules/useless-loop.js +4 -6
  80. package/package.json +5 -1
  81. package/project/cache/flowr-analyzer-cache.d.ts +93 -0
  82. package/project/cache/flowr-analyzer-cache.js +156 -0
  83. package/project/cache/flowr-cache.d.ts +28 -0
  84. package/project/cache/flowr-cache.js +49 -0
  85. package/project/context/abstract-flowr-analyzer-context.d.ts +35 -0
  86. package/project/context/abstract-flowr-analyzer-context.js +46 -0
  87. package/project/context/flowr-analyzer-context.d.ts +48 -0
  88. package/project/context/flowr-analyzer-context.js +47 -0
  89. package/project/context/flowr-analyzer-dependencies-context.d.ts +38 -0
  90. package/project/context/flowr-analyzer-dependencies-context.js +39 -0
  91. package/project/context/flowr-analyzer-files-context.d.ts +86 -0
  92. package/project/context/flowr-analyzer-files-context.js +130 -0
  93. package/project/context/flowr-analyzer-loading-order-context.d.ts +76 -0
  94. package/project/context/flowr-analyzer-loading-order-context.js +90 -0
  95. package/project/context/flowr-file.d.ts +89 -0
  96. package/project/context/flowr-file.js +78 -0
  97. package/project/flowr-analyzer-builder.d.ts +106 -0
  98. package/project/flowr-analyzer-builder.js +197 -0
  99. package/project/flowr-analyzer.d.ts +125 -0
  100. package/project/flowr-analyzer.js +81 -0
  101. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +17 -0
  102. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +28 -0
  103. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +21 -0
  104. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +34 -0
  105. package/project/plugins/file-plugins/flowr-description-file.d.ts +24 -0
  106. package/project/plugins/file-plugins/flowr-description-file.js +38 -0
  107. package/project/plugins/flowr-analyzer-plugin.d.ts +90 -0
  108. package/project/plugins/flowr-analyzer-plugin.js +82 -0
  109. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.d.ts +14 -0
  110. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +56 -0
  111. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-plugin.d.ts +13 -0
  112. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-plugin.js +33 -0
  113. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.d.ts +14 -0
  114. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +41 -0
  115. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-plugin.d.ts +10 -0
  116. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-plugin.js +29 -0
  117. package/project/plugins/package-version-plugins/package.d.ts +15 -0
  118. package/project/plugins/package-version-plugins/package.js +56 -0
  119. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +15 -0
  120. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +44 -0
  121. package/queries/base-query-format.d.ts +2 -8
  122. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +1 -1
  123. package/queries/catalog/call-context-query/call-context-query-executor.js +20 -13
  124. package/queries/catalog/call-context-query/call-context-query-format.d.ts +2 -3
  125. package/queries/catalog/call-context-query/call-context-query-format.js +2 -2
  126. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +1 -1
  127. package/queries/catalog/cluster-query/cluster-query-executor.js +2 -2
  128. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -54
  129. package/queries/catalog/cluster-query/cluster-query-format.js +2 -2
  130. package/queries/catalog/config-query/config-query-executor.d.ts +1 -1
  131. package/queries/catalog/config-query/config-query-executor.js +5 -5
  132. package/queries/catalog/config-query/config-query-format.d.ts +1 -1
  133. package/queries/catalog/config-query/config-query-format.js +1 -1
  134. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +1 -1
  135. package/queries/catalog/control-flow-query/control-flow-query-executor.js +2 -3
  136. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +1 -54
  137. package/queries/catalog/control-flow-query/control-flow-query-format.js +2 -2
  138. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +1 -1
  139. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +2 -2
  140. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -54
  141. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.js +1 -1
  142. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +1 -1
  143. package/queries/catalog/dataflow-query/dataflow-query-executor.js +2 -2
  144. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -54
  145. package/queries/catalog/dataflow-query/dataflow-query-format.js +1 -1
  146. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +1 -1
  147. package/queries/catalog/dependencies-query/dependencies-query-executor.js +19 -12
  148. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +7 -56
  149. package/queries/catalog/dependencies-query/dependencies-query-format.js +7 -4
  150. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +1 -1
  151. package/queries/catalog/df-shape-query/df-shape-query-executor.js +4 -4
  152. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +1 -54
  153. package/queries/catalog/df-shape-query/df-shape-query-format.js +1 -1
  154. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +1 -1
  155. package/queries/catalog/happens-before-query/happens-before-query-executor.js +2 -1
  156. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -54
  157. package/queries/catalog/happens-before-query/happens-before-query-format.js +1 -1
  158. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +1 -1
  159. package/queries/catalog/id-map-query/id-map-query-executor.js +2 -2
  160. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -54
  161. package/queries/catalog/id-map-query/id-map-query-format.js +2 -2
  162. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +1 -1
  163. package/queries/catalog/lineage-query/lineage-query-executor.js +2 -2
  164. package/queries/catalog/lineage-query/lineage-query-format.d.ts +1 -54
  165. package/queries/catalog/lineage-query/lineage-query-format.js +1 -1
  166. package/queries/catalog/linter-query/linter-query-executor.d.ts +1 -1
  167. package/queries/catalog/linter-query/linter-query-executor.js +2 -3
  168. package/queries/catalog/linter-query/linter-query-format.d.ts +1 -54
  169. package/queries/catalog/linter-query/linter-query-format.js +1 -1
  170. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +1 -1
  171. package/queries/catalog/location-map-query/location-map-query-executor.js +3 -2
  172. package/queries/catalog/location-map-query/location-map-query-format.d.ts +1 -1
  173. package/queries/catalog/location-map-query/location-map-query-format.js +1 -1
  174. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +1 -1
  175. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +2 -2
  176. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -54
  177. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.js +1 -1
  178. package/queries/catalog/origin-query/origin-query-executor.d.ts +2 -2
  179. package/queries/catalog/origin-query/origin-query-executor.js +3 -3
  180. package/queries/catalog/origin-query/origin-query-format.d.ts +1 -54
  181. package/queries/catalog/origin-query/origin-query-format.js +1 -1
  182. package/queries/catalog/project-query/project-query-executor.d.ts +1 -1
  183. package/queries/catalog/project-query/project-query-executor.js +2 -2
  184. package/queries/catalog/project-query/project-query-format.d.ts +1 -54
  185. package/queries/catalog/project-query/project-query-format.js +1 -1
  186. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +1 -1
  187. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +4 -2
  188. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +1 -54
  189. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +1 -1
  190. package/queries/catalog/search-query/search-query-executor.d.ts +1 -1
  191. package/queries/catalog/search-query/search-query-executor.js +3 -3
  192. package/queries/catalog/search-query/search-query-format.d.ts +1 -54
  193. package/queries/catalog/search-query/search-query-format.js +1 -1
  194. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +1 -1
  195. package/queries/catalog/static-slice-query/static-slice-query-executor.js +3 -3
  196. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +1 -54
  197. package/queries/catalog/static-slice-query/static-slice-query-format.js +1 -1
  198. package/queries/query-print.d.ts +4 -4
  199. package/queries/query-print.js +12 -12
  200. package/queries/query.d.ts +29 -885
  201. package/queries/query.js +1 -1
  202. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +1 -1
  203. package/r-bridge/retriever.d.ts +15 -2
  204. package/r-bridge/retriever.js +15 -5
  205. package/search/flowr-search-executor.d.ts +3 -5
  206. package/search/flowr-search-executor.js +6 -4
  207. package/search/flowr-search-filters.d.ts +12 -6
  208. package/search/flowr-search-filters.js +1 -1
  209. package/search/flowr-search.d.ts +5 -16
  210. package/search/flowr-search.js +14 -5
  211. package/search/search-executor/search-enrichers.d.ts +37 -36
  212. package/search/search-executor/search-enrichers.js +4 -4
  213. package/search/search-executor/search-generators.d.ts +12 -12
  214. package/search/search-executor/search-generators.js +27 -19
  215. package/search/search-executor/search-mappers.d.ts +5 -5
  216. package/search/search-executor/search-transformer.d.ts +17 -17
  217. package/search/search-executor/search-transformer.js +14 -7
  218. package/util/collections/arrays.d.ts +1 -0
  219. package/util/collections/arrays.js +15 -0
  220. package/util/collections/objectmap.d.ts +17 -0
  221. package/util/collections/objectmap.js +28 -0
  222. package/util/containers.d.ts +0 -1
  223. package/util/containers.js +0 -1
  224. package/util/files.d.ts +17 -0
  225. package/util/files.js +65 -0
  226. package/util/formats/adapter-format.d.ts +6 -0
  227. package/util/formats/adapter-format.js +3 -0
  228. package/util/formats/adapter.d.ts +18 -0
  229. package/util/formats/adapter.js +49 -0
  230. package/util/formats/adapters/r-adapter.d.ts +4 -0
  231. package/util/formats/adapters/r-adapter.js +7 -0
  232. package/util/formats/adapters/rmd-adapter.d.ts +26 -0
  233. package/util/formats/adapters/rmd-adapter.js +91 -0
  234. 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.4.7, R v4.5.0 (r-shell engine)
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: linter (3 ms)
36
+ Query: linter (14 ms)
37
37
  ╰ **Deprecated Functions** (deprecated-functions):
38
- _Metadata_: <code>{"totalDeprecatedCalls":0,"totalDeprecatedFunctionDefinitions":0,"searchTimeMs":0,"processTimeMs":0}</code>
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
- certain:
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
- _Metadata_: <code>{"consumerCalls":0,"callsWithFunctionProducers":0,"callsWithAssignmentProducers":0,"callsWithNonConstantProducers":0,"searchTimeMs":0,"processTimeMs":0}</code>
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
- certain:
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
- _Metadata_: <code>{"totalConsidered":0,"searchTimeMs":0,"processTimeMs":0}</code>
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
- _Metadata_: <code>{"numMatches":0,"numBreak":0,"searchTimeMs":0,"processTimeMs":0}</code>
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
- _Metadata_: <code>{"numOperations":0,"numAccesses":0,"totalAccessed":0,"searchTimeMs":0,"processTimeMs":0}</code>
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
- _Metadata_: <code>{"consideredNodes":5,"searchTimeMs":0,"processTimeMs":0}</code>
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
- _Metadata_: <code>{"numOfUselessLoops":0,"searchTimeMs":0,"processTimeMs":0}</code>
59
- All queries together required ≈3 ms (1ms accuracy, total 9 ms)
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
+ All queries together required ≈14 ms (1ms accuracy, total 17 ms)
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** (14 ms)\
87
+ Query: **linter** (210 ms)\
82
88
  &nbsp;&nbsp;&nbsp;╰ **Deprecated Functions** (deprecated-functions):\
83
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalDeprecatedCalls":0,"totalDeprecatedFunctionDefinitions":0,"searchTimeMs":2,"processTimeMs":0}</code>\
89
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalCalls":0,"totalFunctionDefinitions":0,"searchTimeMs":196,"processTimeMs":0}</code>\
84
90
  &nbsp;&nbsp;&nbsp;╰ **File Path Validity** (file-path-validity):\
85
91
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ certain:\
86
92
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ Path `/root/x.txt` at 1.1-23\
87
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalReads":1,"totalUnknown":0,"totalWritesBeforeAlways":0,"totalValid":0,"searchTimeMs":4,"processTimeMs":1}</code>\
93
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalReads":1,"totalUnknown":0,"totalWritesBeforeAlways":0,"totalValid":0,"searchTimeMs":5,"processTimeMs":1}</code>\
88
94
  &nbsp;&nbsp;&nbsp;╰ **Seeded Randomness** (seeded-randomness):\
89
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"consumerCalls":0,"callsWithFunctionProducers":0,"callsWithAssignmentProducers":0,"callsWithNonConstantProducers":0,"searchTimeMs":0,"processTimeMs":1}</code>\
95
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"consumerCalls":0,"callsWithFunctionProducers":0,"callsWithAssignmentProducers":0,"callsWithNonConstantProducers":0,"searchTimeMs":0,"processTimeMs":0}</code>\
90
96
  &nbsp;&nbsp;&nbsp;╰ **Absolute Paths** (absolute-file-paths):\
91
97
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ certain:\
92
98
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ Path `/root/x.txt` at 1.1-23\
93
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalConsidered":1,"totalUnknown":0,"searchTimeMs":1,"processTimeMs":1}</code>\
99
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalConsidered":1,"totalUnknown":0,"searchTimeMs":3,"processTimeMs":0}</code>\
94
100
  &nbsp;&nbsp;&nbsp;╰ **Unused Definitions** (unused-definitions):\
95
101
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalConsidered":0,"searchTimeMs":0,"processTimeMs":0}</code>\
96
102
  &nbsp;&nbsp;&nbsp;╰ **Naming Convention** (naming-convention):\
97
103
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"numMatches":0,"numBreak":0,"searchTimeMs":0,"processTimeMs":0}</code>\
104
+ &nbsp;&nbsp;&nbsp;╰ **Network Functions** (network-functions):\
105
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"totalCalls":0,"totalFunctionDefinitions":0,"searchTimeMs":1,"processTimeMs":0}</code>\
98
106
  &nbsp;&nbsp;&nbsp;╰ **Dataframe Access Validation** (dataframe-access-validation):\
99
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"numOperations":0,"numAccesses":0,"totalAccessed":0,"searchTimeMs":0,"processTimeMs":2}</code>\
107
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"numOperations":0,"numAccesses":0,"totalAccessed":0,"searchTimeMs":0,"processTimeMs":3}</code>\
100
108
  &nbsp;&nbsp;&nbsp;╰ **Dead Code** (dead-code):\
101
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"consideredNodes":5,"searchTimeMs":1,"processTimeMs":0}</code>\
109
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"consideredNodes":5,"searchTimeMs":0,"processTimeMs":1}</code>\
102
110
  &nbsp;&nbsp;&nbsp;╰ **Useless Loops** (useless-loop):\
103
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>{"numOfUselessLoops":0,"searchTimeMs":0,"processTimeMs":1}</code>\
104
- _All queries together required ≈14 ms (1ms accuracy, total 216 ms)_
111
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _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 _215.9 ms_ (including parsing and normalization and the query) within the generation environment.
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
- "totalDeprecatedCalls": 0,
124
- "totalDeprecatedFunctionDefinitions": 0,
125
- "searchTimeMs": 2,
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": 4,
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": 1
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": 1,
179
- "processTimeMs": 1
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": 2
223
+ "processTimeMs": 3
207
224
  }
208
225
  },
209
226
  "dead-code": {
210
227
  "results": [],
211
228
  ".meta": {
212
229
  "consideredNodes": 5,
213
- "searchTimeMs": 1,
214
- "processTimeMs": 0
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": 1
239
+ "processTimeMs": 0
223
240
  }
224
241
  }
225
242
  },
226
243
  ".meta": {
227
- "timing": 14
244
+ "timing": 210
228
245
  }
229
246
  },
230
247
  ".meta": {
231
- "timing": 14
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.4.7, R v4.5.0 (r-shell engine)
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!">135.1 ms</span></i> (as of Aug 20, 2025),
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.4.7, R v4.5.0 (r-shell engine)
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.9 ms_ (including parse and normalize, using the [r-shell](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
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
  ![Example of a simple REPL session](wiki/gif/repl-demo-opt.gif)
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
@@ -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 { ReplCommand } from './repl-main';
2
- export declare const controlflowCommand: ReplCommand;
3
- export declare const controlflowStarCommand: ReplCommand;
4
- export declare const controlflowBbCommand: ReplCommand;
5
- export declare const controlflowBbStarCommand: ReplCommand;
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
- async function controlflow(parser, remainingLine, config) {
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(shell, remainingLine, output, simplifications, cfgConverter, config) {
55
- const result = await controlflow(shell, handleString(remainingLine), config);
56
- const cfg = (0, extract_cfg_1.extractCfg)(result.normalize, config, result.dataflow.graph, [...cfg_simplification_1.DefaultCfgSimplificationOrder, ...simplifications]);
57
- const mermaid = cfgConverter(cfg, result.normalize);
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
- fn: async ({ output, parser, remainingLine, config }) => {
73
- await produceAndPrintCfg(parser, remainingLine, output, [], cfg_1.cfgToMermaid, config);
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
- fn: async ({ output, parser, remainingLine, config }) => {
82
- await produceAndPrintCfg(parser, remainingLine, output, [], cfg_1.cfgToMermaidUrl, config);
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
- fn: async ({ output, parser, remainingLine, config }) => {
91
- await produceAndPrintCfg(parser, remainingLine, output, ['to-basic-blocks'], cfg_1.cfgToMermaid, config);
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
- fn: async ({ output, parser, remainingLine, config }) => {
100
- await produceAndPrintCfg(parser, remainingLine, output, ['to-basic-blocks'], cfg_1.cfgToMermaidUrl, config);
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 { ReplCommand } from './repl-main';
2
- export declare const dataflowCommand: ReplCommand;
3
- export declare const dataflowStarCommand: ReplCommand;
4
- export declare const dataflowSimplifiedCommand: ReplCommand;
5
- export declare const dataflowSimpleStarCommand: ReplCommand;
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;