@eagleoutice/flowr 1.4.1 → 1.5.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 (300) hide show
  1. package/README.md +3 -3
  2. package/abstract-interpretation/processor.js +9 -3
  3. package/config.d.ts +16 -0
  4. package/config.js +75 -0
  5. package/core/input.d.ts +1 -1
  6. package/core/output.d.ts +1 -2
  7. package/core/print/parse-printer.d.ts +1 -2
  8. package/core/print/parse-printer.js +6 -4
  9. package/core/print/slice-diff-ansi.js +7 -7
  10. package/core/slicer.js +4 -8
  11. package/core/steps.d.ts +355 -31
  12. package/core/steps.js +7 -14
  13. package/dataflow/environments/environment.js +8 -0
  14. package/dataflow/environments/register.js +1 -0
  15. package/dataflow/extractor.d.ts +2 -2
  16. package/dataflow/extractor.js +10 -2
  17. package/dataflow/internal/process/functions/function-call.js +7 -1
  18. package/dataflow/internal/process/functions/source.d.ts +8 -0
  19. package/dataflow/internal/process/functions/source.js +81 -0
  20. package/dataflow/processor.d.ts +10 -1
  21. package/index.d.ts +0 -2
  22. package/index.js +0 -2
  23. package/package.json +75 -202
  24. package/r-bridge/lang-4.x/ast/index.d.ts +1 -0
  25. package/r-bridge/lang-4.x/ast/index.js +3 -0
  26. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +2 -0
  27. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -1
  28. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +14 -0
  29. package/r-bridge/lang-4.x/ast/parser/json/format.js +26 -0
  30. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +7 -0
  31. package/r-bridge/lang-4.x/ast/parser/json/parser.js +57 -0
  32. package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +0 -3
  33. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -2
  34. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -2
  35. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +5 -1
  36. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +7 -10
  37. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +2 -2
  38. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +1 -1
  39. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +2 -2
  40. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +4 -4
  41. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +2 -2
  42. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +4 -4
  43. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +2 -2
  44. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +2 -2
  45. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -1
  46. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -1
  47. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +2 -2
  48. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +3 -6
  49. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +2 -2
  50. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +2 -2
  51. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +2 -2
  52. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +6 -11
  53. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +15 -23
  54. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +6 -6
  55. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +3 -3
  56. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +2 -2
  57. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +2 -2
  58. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +3 -3
  59. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +3 -4
  60. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +2 -2
  61. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +2 -2
  62. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +2 -2
  63. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +4 -4
  64. package/r-bridge/lang-4.x/values.d.ts +0 -1
  65. package/r-bridge/lang-4.x/values.js +14 -6
  66. package/r-bridge/retriever.d.ts +25 -21
  67. package/r-bridge/retriever.js +73 -23
  68. package/r-bridge/shell-executor.d.ts +3 -17
  69. package/r-bridge/shell-executor.js +9 -78
  70. package/r-bridge/shell.d.ts +5 -27
  71. package/r-bridge/shell.js +31 -92
  72. package/{statistics/output → util}/ansi.js +1 -1
  73. package/util/args.d.ts +8 -4
  74. package/util/args.js +11 -4
  75. package/util/cfg/visitor.js +1 -1
  76. package/util/files.d.ts +6 -0
  77. package/util/files.js +11 -1
  78. package/util/log.js +3 -0
  79. package/util/{summarizer/summarizer.d.ts → summarizer.d.ts} +15 -1
  80. package/util/summarizer.js +37 -0
  81. package/util/version.d.ts +2 -0
  82. package/util/version.js +10 -0
  83. package/benchmark/index.d.ts +0 -3
  84. package/benchmark/index.js +0 -20
  85. package/benchmark/slicer.d.ts +0 -101
  86. package/benchmark/slicer.js +0 -225
  87. package/benchmark/stats/index.d.ts +0 -10
  88. package/benchmark/stats/index.js +0 -27
  89. package/benchmark/stats/print.d.ts +0 -7
  90. package/benchmark/stats/print.js +0 -157
  91. package/benchmark/stats/stats.d.ts +0 -41
  92. package/benchmark/stats/stats.js +0 -6
  93. package/benchmark/stopwatch.d.ts +0 -35
  94. package/benchmark/stopwatch.js +0 -79
  95. package/cli/benchmark-app.d.ts +0 -9
  96. package/cli/benchmark-app.js +0 -52
  97. package/cli/benchmark-helper-app.d.ts +0 -7
  98. package/cli/benchmark-helper-app.js +0 -60
  99. package/cli/common/features.d.ts +0 -3
  100. package/cli/common/features.js +0 -30
  101. package/cli/common/index.d.ts +0 -2
  102. package/cli/common/index.js +0 -19
  103. package/cli/common/options.d.ts +0 -20
  104. package/cli/common/options.js +0 -82
  105. package/cli/common/script.d.ts +0 -21
  106. package/cli/common/script.js +0 -61
  107. package/cli/common/scripts-info.d.ts +0 -24
  108. package/cli/common/scripts-info.js +0 -69
  109. package/cli/export-quads-app.d.ts +0 -7
  110. package/cli/export-quads-app.js +0 -46
  111. package/cli/repl/commands/cfg.d.ts +0 -3
  112. package/cli/repl/commands/cfg.js +0 -37
  113. package/cli/repl/commands/commands.d.ts +0 -11
  114. package/cli/repl/commands/commands.js +0 -103
  115. package/cli/repl/commands/dataflow.d.ts +0 -3
  116. package/cli/repl/commands/dataflow.js +0 -34
  117. package/cli/repl/commands/execute.d.ts +0 -4
  118. package/cli/repl/commands/execute.js +0 -27
  119. package/cli/repl/commands/index.d.ts +0 -2
  120. package/cli/repl/commands/index.js +0 -19
  121. package/cli/repl/commands/main.d.ts +0 -39
  122. package/cli/repl/commands/main.js +0 -14
  123. package/cli/repl/commands/normalize.d.ts +0 -3
  124. package/cli/repl/commands/normalize.js +0 -34
  125. package/cli/repl/commands/parse.d.ts +0 -2
  126. package/cli/repl/commands/parse.js +0 -109
  127. package/cli/repl/commands/quit.d.ts +0 -2
  128. package/cli/repl/commands/quit.js +0 -12
  129. package/cli/repl/commands/version.d.ts +0 -16
  130. package/cli/repl/commands/version.js +0 -33
  131. package/cli/repl/core.d.ts +0 -39
  132. package/cli/repl/core.js +0 -116
  133. package/cli/repl/execute.d.ts +0 -28
  134. package/cli/repl/execute.js +0 -79
  135. package/cli/repl/index.d.ts +0 -5
  136. package/cli/repl/index.js +0 -22
  137. package/cli/repl/prompt.d.ts +0 -2
  138. package/cli/repl/prompt.js +0 -9
  139. package/cli/repl/server/connection.d.ts +0 -21
  140. package/cli/repl/server/connection.js +0 -218
  141. package/cli/repl/server/messages/analysis.d.ts +0 -71
  142. package/cli/repl/server/messages/analysis.js +0 -21
  143. package/cli/repl/server/messages/error.d.ts +0 -11
  144. package/cli/repl/server/messages/error.js +0 -3
  145. package/cli/repl/server/messages/hello.d.ts +0 -20
  146. package/cli/repl/server/messages/hello.js +0 -3
  147. package/cli/repl/server/messages/index.d.ts +0 -1
  148. package/cli/repl/server/messages/index.js +0 -3
  149. package/cli/repl/server/messages/messages.d.ts +0 -35
  150. package/cli/repl/server/messages/messages.js +0 -40
  151. package/cli/repl/server/messages/repl.d.ts +0 -33
  152. package/cli/repl/server/messages/repl.js +0 -37
  153. package/cli/repl/server/messages/slice.d.ts +0 -25
  154. package/cli/repl/server/messages/slice.js +0 -37
  155. package/cli/repl/server/net.d.ts +0 -49
  156. package/cli/repl/server/net.js +0 -63
  157. package/cli/repl/server/send.d.ts +0 -4
  158. package/cli/repl/server/send.js +0 -18
  159. package/cli/repl/server/server.d.ts +0 -20
  160. package/cli/repl/server/server.js +0 -66
  161. package/cli/repl/server/validate.d.ts +0 -15
  162. package/cli/repl/server/validate.js +0 -34
  163. package/cli/slicer-app.d.ts +0 -11
  164. package/cli/slicer-app.js +0 -81
  165. package/cli/statistics-app.d.ts +0 -11
  166. package/cli/statistics-app.js +0 -98
  167. package/cli/statistics-helper-app.d.ts +0 -11
  168. package/cli/statistics-helper-app.js +0 -83
  169. package/cli/summarizer-app.d.ts +0 -18
  170. package/cli/summarizer-app.js +0 -67
  171. package/flowr.d.ts +0 -27
  172. package/flowr.js +0 -137
  173. package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +0 -25
  174. package/r-bridge/lang-4.x/ast/parser/xml/config.js +0 -16
  175. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +0 -9
  176. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +0 -51
  177. package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +0 -17
  178. package/r-bridge/lang-4.x/ast/parser/xml/parser.js +0 -30
  179. package/statistics/features/common-syntax-probability.d.ts +0 -31
  180. package/statistics/features/common-syntax-probability.js +0 -156
  181. package/statistics/features/feature.d.ts +0 -175
  182. package/statistics/features/feature.js +0 -30
  183. package/statistics/features/index.d.ts +0 -1
  184. package/statistics/features/index.js +0 -18
  185. package/statistics/features/post-processing.d.ts +0 -12
  186. package/statistics/features/post-processing.js +0 -21
  187. package/statistics/features/supported/assignments/assignments.d.ts +0 -11
  188. package/statistics/features/supported/assignments/assignments.js +0 -53
  189. package/statistics/features/supported/assignments/index.d.ts +0 -1
  190. package/statistics/features/supported/assignments/index.js +0 -6
  191. package/statistics/features/supported/assignments/post-process.d.ts +0 -3
  192. package/statistics/features/supported/assignments/post-process.js +0 -125
  193. package/statistics/features/supported/comments/comments.d.ts +0 -18
  194. package/statistics/features/supported/comments/comments.js +0 -133
  195. package/statistics/features/supported/comments/index.d.ts +0 -1
  196. package/statistics/features/supported/comments/index.js +0 -6
  197. package/statistics/features/supported/comments/post-process.d.ts +0 -3
  198. package/statistics/features/supported/comments/post-process.js +0 -50
  199. package/statistics/features/supported/control-flow/control-flow.d.ts +0 -17
  200. package/statistics/features/supported/control-flow/control-flow.js +0 -67
  201. package/statistics/features/supported/control-flow/index.d.ts +0 -1
  202. package/statistics/features/supported/control-flow/index.js +0 -6
  203. package/statistics/features/supported/control-flow/post-process.d.ts +0 -3
  204. package/statistics/features/supported/control-flow/post-process.js +0 -65
  205. package/statistics/features/supported/data-access/data-access.d.ts +0 -15
  206. package/statistics/features/supported/data-access/data-access.js +0 -118
  207. package/statistics/features/supported/data-access/index.d.ts +0 -1
  208. package/statistics/features/supported/data-access/index.js +0 -6
  209. package/statistics/features/supported/data-access/post-process.d.ts +0 -3
  210. package/statistics/features/supported/data-access/post-process.js +0 -107
  211. package/statistics/features/supported/defined-functions/defined-functions.d.ts +0 -35
  212. package/statistics/features/supported/defined-functions/defined-functions.js +0 -139
  213. package/statistics/features/supported/defined-functions/index.d.ts +0 -1
  214. package/statistics/features/supported/defined-functions/index.js +0 -6
  215. package/statistics/features/supported/defined-functions/post-process.d.ts +0 -6
  216. package/statistics/features/supported/defined-functions/post-process.js +0 -177
  217. package/statistics/features/supported/expression-list/expression-list.d.ts +0 -9
  218. package/statistics/features/supported/expression-list/expression-list.js +0 -36
  219. package/statistics/features/supported/expression-list/index.d.ts +0 -1
  220. package/statistics/features/supported/expression-list/index.js +0 -6
  221. package/statistics/features/supported/expression-list/post-process.d.ts +0 -3
  222. package/statistics/features/supported/expression-list/post-process.js +0 -44
  223. package/statistics/features/supported/index.d.ts +0 -10
  224. package/statistics/features/supported/index.js +0 -27
  225. package/statistics/features/supported/loops/index.d.ts +0 -1
  226. package/statistics/features/supported/loops/index.js +0 -6
  227. package/statistics/features/supported/loops/loops.d.ts +0 -20
  228. package/statistics/features/supported/loops/loops.js +0 -79
  229. package/statistics/features/supported/loops/post-process.d.ts +0 -3
  230. package/statistics/features/supported/loops/post-process.js +0 -72
  231. package/statistics/features/supported/used-functions/index.d.ts +0 -1
  232. package/statistics/features/supported/used-functions/index.js +0 -6
  233. package/statistics/features/supported/used-functions/post-process.d.ts +0 -6
  234. package/statistics/features/supported/used-functions/post-process.js +0 -179
  235. package/statistics/features/supported/used-functions/used-functions.d.ts +0 -24
  236. package/statistics/features/supported/used-functions/used-functions.js +0 -95
  237. package/statistics/features/supported/used-packages/index.d.ts +0 -1
  238. package/statistics/features/supported/used-packages/index.js +0 -6
  239. package/statistics/features/supported/used-packages/post-process.d.ts +0 -3
  240. package/statistics/features/supported/used-packages/post-process.js +0 -121
  241. package/statistics/features/supported/used-packages/used-packages.d.ts +0 -16
  242. package/statistics/features/supported/used-packages/used-packages.js +0 -130
  243. package/statistics/features/supported/values/index.d.ts +0 -1
  244. package/statistics/features/supported/values/index.js +0 -6
  245. package/statistics/features/supported/values/post-process.d.ts +0 -3
  246. package/statistics/features/supported/values/post-process.js +0 -72
  247. package/statistics/features/supported/values/values.d.ts +0 -14
  248. package/statistics/features/supported/values/values.js +0 -101
  249. package/statistics/features/supported/variables/index.d.ts +0 -1
  250. package/statistics/features/supported/variables/index.js +0 -6
  251. package/statistics/features/supported/variables/post-process.d.ts +0 -9
  252. package/statistics/features/supported/variables/post-process.js +0 -122
  253. package/statistics/features/supported/variables/variables.d.ts +0 -15
  254. package/statistics/features/supported/variables/variables.js +0 -70
  255. package/statistics/index.d.ts +0 -6
  256. package/statistics/index.js +0 -24
  257. package/statistics/meta-statistics.d.ts +0 -33
  258. package/statistics/meta-statistics.js +0 -17
  259. package/statistics/output/file-provider.d.ts +0 -37
  260. package/statistics/output/file-provider.js +0 -97
  261. package/statistics/output/index.d.ts +0 -4
  262. package/statistics/output/index.js +0 -21
  263. package/statistics/output/print-stats.d.ts +0 -17
  264. package/statistics/output/print-stats.js +0 -69
  265. package/statistics/output/statistics-file.d.ts +0 -37
  266. package/statistics/output/statistics-file.js +0 -69
  267. package/statistics/statistics.d.ts +0 -24
  268. package/statistics/statistics.js +0 -109
  269. package/util/summarizer/auto-detect.d.ts +0 -2
  270. package/util/summarizer/auto-detect.js +0 -32
  271. package/util/summarizer/benchmark/data.d.ts +0 -66
  272. package/util/summarizer/benchmark/data.js +0 -13
  273. package/util/summarizer/benchmark/first-phase/input.d.ts +0 -2
  274. package/util/summarizer/benchmark/first-phase/input.js +0 -59
  275. package/util/summarizer/benchmark/first-phase/process.d.ts +0 -10
  276. package/util/summarizer/benchmark/first-phase/process.js +0 -208
  277. package/util/summarizer/benchmark/second-phase/graph.d.ts +0 -2
  278. package/util/summarizer/benchmark/second-phase/graph.js +0 -54
  279. package/util/summarizer/benchmark/second-phase/process.d.ts +0 -4
  280. package/util/summarizer/benchmark/second-phase/process.js +0 -89
  281. package/util/summarizer/benchmark/summarizer.d.ts +0 -35
  282. package/util/summarizer/benchmark/summarizer.js +0 -49
  283. package/util/summarizer/statistics/first-phase/process.d.ts +0 -6
  284. package/util/summarizer/statistics/first-phase/process.js +0 -81
  285. package/util/summarizer/statistics/post-process/clusterer.d.ts +0 -26
  286. package/util/summarizer/statistics/post-process/clusterer.js +0 -43
  287. package/util/summarizer/statistics/post-process/file-based-count.d.ts +0 -17
  288. package/util/summarizer/statistics/post-process/file-based-count.js +0 -49
  289. package/util/summarizer/statistics/post-process/histogram.d.ts +0 -59
  290. package/util/summarizer/statistics/post-process/histogram.js +0 -128
  291. package/util/summarizer/statistics/post-process/index.d.ts +0 -4
  292. package/util/summarizer/statistics/post-process/index.js +0 -21
  293. package/util/summarizer/statistics/post-process/post-process-output.d.ts +0 -16
  294. package/util/summarizer/statistics/post-process/post-process-output.js +0 -104
  295. package/util/summarizer/statistics/second-phase/process.d.ts +0 -11
  296. package/util/summarizer/statistics/second-phase/process.js +0 -117
  297. package/util/summarizer/statistics/summarizer.d.ts +0 -35
  298. package/util/summarizer/statistics/summarizer.js +0 -135
  299. package/util/summarizer/summarizer.js +0 -13
  300. /package/{statistics/output → util}/ansi.d.ts +0 -0
@@ -1,130 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.usedPackages = exports.initialUsedPackageInfos = void 0;
27
- const xpath = __importStar(require("xpath-ts2"));
28
- const output_1 = require("../../../output");
29
- const post_process_1 = require("./post-process");
30
- exports.initialUsedPackageInfos = {
31
- library: 0,
32
- require: 0,
33
- loadNamespace: 0,
34
- requireNamespace: 0,
35
- attachNamespace: 0,
36
- withinApply: 0,
37
- '::': 0,
38
- ':::': 0,
39
- /** just contains all occurrences where it is impossible to statically determine which package is loaded */
40
- '<loadedByVariable>': 0
41
- };
42
- // based on the extraction routine of lintr search for function calls which are not character-loads (we can not trace those...)
43
- const withinApply = xpath.parse(`
44
- //SYMBOL_FUNCTION_CALL[contains(.,"apply")]/../..
45
- //SYMBOL[text()='require' or text()='library' or text()='loadNamespace' or text()='requireNamespace' or text()='attachNamespace']
46
- /../..
47
- `);
48
- // horrible ways I found exploratively like loading within `sapply`
49
- const libraryOrRequire = xpath.parse(`
50
- //SYMBOL_FUNCTION_CALL[text() = $variable]
51
- /parent::expr
52
- /parent::expr[
53
- expr[2][STR_CONST]
54
- or (
55
- expr[2][SYMBOL]
56
- and not(
57
- SYMBOL_SUB[text() = 'character.only']
58
- /following-sibling::expr[1]
59
- /NUM_CONST[text() = 'TRUE' or text() = 'T']
60
- )
61
- )
62
- ]/OP-LEFT-PAREN[1]/following-sibling::expr[1][SYMBOL | STR_CONST]
63
- `);
64
- // there is no except in xpath 1.0?
65
- const packageLoadedWithVariableLoadRequire = xpath.parse(`
66
- //SYMBOL_FUNCTION_CALL[text() = 'library' or text() = 'require']
67
- /parent::expr
68
- /parent::expr[
69
- expr[2][SYMBOL]
70
- and (
71
- SYMBOL_SUB[text() = 'character.only']
72
- /following-sibling::expr[1]
73
- /NUM_CONST[text() = 'TRUE' or text() = 'T']
74
- )
75
- ]/OP-LEFT-PAREN[1]/following-sibling::expr[1][SYMBOL | STR_CONST]
76
- `);
77
- const packageLoadedWithVariableNamespaces = xpath.parse(`
78
- //SYMBOL_FUNCTION_CALL[text() = 'loadNamespace' or text() = 'requireNamespace' or text() = 'attachNamespace']/../following-sibling::expr[1][SYMBOL]
79
- `);
80
- const queryForFunctionCall = xpath.parse(`
81
- //SYMBOL_FUNCTION_CALL[text() = $variable]/../following-sibling::expr[1][STR_CONST]
82
- `);
83
- // otherwise, the parser seems to fail
84
- const queryForNsAccess = xpath.parse(`
85
- //NS_GET[text() = $variable]/../SYMBOL_PACKAGE[1]
86
- |
87
- //NS_GET_INT[text() = $variable]/../SYMBOL_PACKAGE[1]
88
- `);
89
- const queries = [
90
- {
91
- types: ['library', 'require'],
92
- query: libraryOrRequire
93
- },
94
- {
95
- types: ['loadNamespace', 'requireNamespace', 'attachNamespace'],
96
- query: queryForFunctionCall
97
- },
98
- {
99
- types: ['::', ':::'],
100
- query: queryForNsAccess
101
- }
102
- ];
103
- exports.usedPackages = {
104
- name: 'Used Packages',
105
- description: 'All the packages used in the code',
106
- process(existing, input) {
107
- // we will unify in the end, so we can count, group etc. but we do not re-count multiple packages in the same file
108
- for (const q of queries) {
109
- for (const fn of q.types) {
110
- const nodes = q.query.select({ node: input.parsedRAst, variables: { variable: fn } });
111
- existing[fn] += nodes.length;
112
- (0, output_1.appendStatisticsFile)(this.name, fn, nodes, input.filepath, true);
113
- }
114
- }
115
- const nodesForVariableLoad = [
116
- ...packageLoadedWithVariableLoadRequire.select({ node: input.parsedRAst }),
117
- ...packageLoadedWithVariableNamespaces.select({ node: input.parsedRAst })
118
- ];
119
- existing['<loadedByVariable>'] += nodesForVariableLoad.length;
120
- // should not be unique as variables may be repeated, and we have no idea
121
- (0, output_1.appendStatisticsFile)(this.name, '<loadedByVariable>', nodesForVariableLoad, input.filepath);
122
- const withinApplyNodes = withinApply.select({ node: input.parsedRAst });
123
- existing.withinApply += withinApplyNodes.length;
124
- (0, output_1.appendStatisticsFile)(this.name, 'withinApply', withinApplyNodes, input.filepath);
125
- return existing;
126
- },
127
- initialValue: exports.initialUsedPackageInfos,
128
- postProcess: post_process_1.postProcess
129
- };
130
- //# sourceMappingURL=used-packages.js.map
@@ -1 +0,0 @@
1
- export { values } from './values';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.values = void 0;
4
- var values_1 = require("./values");
5
- Object.defineProperty(exports, "values", { enumerable: true, get: function () { return values_1.values; } });
6
- //# sourceMappingURL=index.js.map
@@ -1,3 +0,0 @@
1
- import type { FeatureStatisticsWithMeta } from '../../feature';
2
- import type { StatisticsSummarizerConfiguration } from '../../../../util/summarizer/statistics/summarizer';
3
- export declare function postProcess(featureRoot: string, info: Map<string, FeatureStatisticsWithMeta>, outputPath: string, config: StatisticsSummarizerConfiguration): void;
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.postProcess = void 0;
7
- const data_1 = require("../../../../util/summarizer/benchmark/data");
8
- const node_fs_1 = __importDefault(require("node:fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const process_1 = require("../../../../util/summarizer/benchmark/first-phase/process");
11
- const files_1 = require("../../../../util/files");
12
- const time_1 = require("../../../../util/time");
13
- const arrays_1 = require("../../../../util/arrays");
14
- const post_processing_1 = require("../../post-processing");
15
- function postProcess(featureRoot, info, outputPath, config) {
16
- const collected = {};
17
- for (const [filepath, data] of info.entries()) {
18
- const value = data.values;
19
- for (const [key, val] of Object.entries(value)) {
20
- let get = collected[key];
21
- if (!get) {
22
- get = (0, post_processing_1.emptySummarizedWithProject)();
23
- collected[key] = get;
24
- }
25
- get.count.push(val);
26
- if (val > 0) {
27
- (0, post_processing_1.recordFilePath)(get, filepath, config);
28
- }
29
- }
30
- }
31
- const valuesOutStream = node_fs_1.default.createWriteStream(path_1.default.join(outputPath, 'values.csv'));
32
- valuesOutStream.write(`kind,unique-projects,unique-files,${(0, data_1.summarizedMeasurement2CsvHeader)()}\n`);
33
- for (const [key, val] of Object.entries(collected)) {
34
- const data = val;
35
- const sum = (0, process_1.summarizeMeasurement)(data.count);
36
- valuesOutStream.write(`${JSON.stringify(key)},${data.uniqueProjects.size},${data.uniqueFiles.size},${(0, data_1.summarizedMeasurement2Csv)(sum)}\n`);
37
- }
38
- valuesOutStream.close();
39
- // now we read all numeric values to get the top used magic numbers (per file)
40
- const valueMap = new Map();
41
- (0, files_1.readLineByLineSync)(path_1.default.join(featureRoot, 'numeric.txt'), (line, lineNumber) => {
42
- if (line.length === 0) {
43
- return;
44
- }
45
- if (lineNumber % 2_500 === 0) {
46
- console.log(` [${(0, time_1.date2string)(new Date())}] Collecting numeric values ${lineNumber}`);
47
- }
48
- const [values, context] = JSON.parse(String(line));
49
- const bag = (0, arrays_1.array2bag)(values);
50
- for (const [key, val] of bag.entries()) {
51
- let get = valueMap.get(key);
52
- if (!get) {
53
- get = { count: [], uniqueFiles: new Set(), uniqueProjects: new Set() };
54
- valueMap.set(key, get);
55
- }
56
- get.count.push(val);
57
- if (val > 0) {
58
- get.uniqueFiles.add(context ?? '');
59
- get.uniqueProjects.add(context?.split(path_1.default.sep)[config.projectSkip] ?? '');
60
- }
61
- }
62
- });
63
- const magicNumbersOutStream = node_fs_1.default.createWriteStream(path_1.default.join(outputPath, 'magic-numbers.csv'));
64
- magicNumbersOutStream.write(`num,unique-projects,unique-files,${(0, data_1.summarizedMeasurement2CsvHeader)()}\n`);
65
- for (const [key, val] of valueMap.entries()) {
66
- const sum = (0, process_1.summarizeMeasurement)(val.count);
67
- magicNumbersOutStream.write(`${JSON.stringify(key)},${val.uniqueProjects.size},${val.uniqueFiles.size},${(0, data_1.summarizedMeasurement2Csv)(sum)}\n`);
68
- }
69
- magicNumbersOutStream.close();
70
- }
71
- exports.postProcess = postProcess;
72
- //# sourceMappingURL=post-process.js.map
@@ -1,14 +0,0 @@
1
- import type { Feature } from '../../feature';
2
- import type { Writable } from 'ts-essentials';
3
- declare const initialValueInfo: {
4
- allNumerics: number;
5
- imaginaryNumbers: number;
6
- integers: number;
7
- floatHex: number;
8
- logical: number;
9
- specialConstants: number;
10
- strings: number;
11
- };
12
- export type ValueInfo = Writable<typeof initialValueInfo>;
13
- export declare const values: Feature<ValueInfo>;
14
- export {};
@@ -1,101 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.values = void 0;
27
- const xpath = __importStar(require("xpath-ts2"));
28
- const r_bridge_1 = require("../../../../r-bridge");
29
- const assert_1 = require("../../../../util/assert");
30
- const output_1 = require("../../../output");
31
- const post_process_1 = require("./post-process");
32
- const initialValueInfo = {
33
- allNumerics: 0,
34
- imaginaryNumbers: 0,
35
- integers: 0,
36
- floatHex: 0,
37
- logical: 0,
38
- specialConstants: 0,
39
- strings: 0
40
- };
41
- const numericConstantQuery = xpath.parse('//NUM_CONST');
42
- const stringConstantQuery = xpath.parse('//STR_CONST');
43
- const specialConstantsQuery = xpath.parse('//NULL_CONST');
44
- const shortLogicalSymbolQuery = xpath.parse('//SYMBOL[text() = \'T\' or text() = \'F\']');
45
- function classifyNumericConstants(numeric, existing) {
46
- if (numeric === r_bridge_1.RTrue || numeric === r_bridge_1.RFalse) {
47
- return 'logical';
48
- }
49
- if (numeric === r_bridge_1.RNa || numeric === 'NaN' || numeric === r_bridge_1.RNull || numeric === 'Inf' || numeric === '-Inf') {
50
- return 'special-constants';
51
- }
52
- if (numeric.includes('i')) {
53
- existing.imaginaryNumbers++;
54
- }
55
- else if (numeric.endsWith('L')) {
56
- existing.integers++;
57
- }
58
- else if (r_bridge_1.RNumHexFloatRegex.test(numeric)) {
59
- existing.floatHex++;
60
- }
61
- return 'allNumerics';
62
- }
63
- exports.values = {
64
- name: 'Values',
65
- description: 'All values used (as constants etc.)',
66
- process(existing, input) {
67
- const strings = stringConstantQuery.select({ node: input.parsedRAst });
68
- const numerics = numericConstantQuery.select({ node: input.parsedRAst });
69
- const specialConstants = specialConstantsQuery.select({ node: input.parsedRAst });
70
- const specialLogicalSymbols = shortLogicalSymbolQuery.select({ node: input.parsedRAst });
71
- const numbers = [];
72
- numerics.map(n => [n, classifyNumericConstants(n.textContent ?? '<unknown>', existing)])
73
- .forEach(([n, type]) => {
74
- switch (type) {
75
- case 'allNumerics':
76
- numbers.push(n);
77
- break;
78
- case 'logical':
79
- specialLogicalSymbols.push(n);
80
- break;
81
- case 'special-constants':
82
- specialConstants.push(n);
83
- break;
84
- default:
85
- (0, assert_1.assertUnreachable)(type);
86
- }
87
- });
88
- existing.strings += strings.length;
89
- existing.allNumerics += numerics.length;
90
- existing.specialConstants += specialConstants.length;
91
- existing.logical += specialLogicalSymbols.length;
92
- (0, output_1.appendStatisticsFile)(this.name, 'numeric', numbers, input.filepath);
93
- (0, output_1.appendStatisticsFile)(this.name, 'string', strings, input.filepath);
94
- (0, output_1.appendStatisticsFile)(this.name, 'specialConstant', specialConstants, input.filepath);
95
- (0, output_1.appendStatisticsFile)(this.name, 'logical', specialLogicalSymbols, input.filepath);
96
- return existing;
97
- },
98
- initialValue: initialValueInfo,
99
- postProcess: post_process_1.postProcess
100
- };
101
- //# sourceMappingURL=values.js.map
@@ -1 +0,0 @@
1
- export { variables } from './variables';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.variables = void 0;
4
- var variables_1 = require("./variables");
5
- Object.defineProperty(exports, "variables", { enumerable: true, get: function () { return variables_1.variables; } });
6
- //# sourceMappingURL=index.js.map
@@ -1,9 +0,0 @@
1
- import type { FeatureStatisticsWithMeta } from '../../feature';
2
- import type { StatisticsSummarizerConfiguration } from '../../../../util/summarizer/statistics/summarizer';
3
- import type { SummarizedWithProject } from '../../post-processing';
4
- export declare function postProcess(featureRoot: string, info: Map<string, FeatureStatisticsWithMeta>, outputPath: string, config: StatisticsSummarizerConfiguration): void;
5
- type VariableInfoMap = Map<string, SummarizedWithProject & {
6
- linePercentageInFile: number[][];
7
- }>;
8
- export declare function writeVariableInfoToCsv(outputPath: string, filename: `${string}.csv`, data: VariableInfoMap): void;
9
- export {};
@@ -1,122 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.writeVariableInfoToCsv = exports.postProcess = void 0;
7
- const post_processing_1 = require("../../post-processing");
8
- const node_fs_1 = __importDefault(require("node:fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const data_1 = require("../../../../util/summarizer/benchmark/data");
11
- const process_1 = require("../../../../util/summarizer/benchmark/first-phase/process");
12
- const files_1 = require("../../../../util/files");
13
- function collectUsedVariables(featureRoot, info, config, outputPath) {
14
- const used = collectVariableInfoFor(path_1.default.join(featureRoot, 'usedVariables.txt'), info, config);
15
- writeVariableInfoToCsv(outputPath, 'used-variables.csv', used);
16
- // we manually clear these maps to save memory
17
- used.clear();
18
- }
19
- function collectDefinedVariables(featureRoot, info, config, outputPath) {
20
- const defined = collectVariableInfoFor(path_1.default.join(featureRoot, 'definedVariables.txt'), info, config);
21
- writeVariableInfoToCsv(outputPath, 'defined-variables.csv', defined);
22
- defined.clear();
23
- }
24
- function collectRedefinedVariables(featureRoot, info, config, outputPath) {
25
- const redefined = collectVariableInfoFor(path_1.default.join(featureRoot, 'redefinedVariables.txt'), info, config);
26
- writeVariableInfoToCsv(outputPath, 'redefined-variables.csv', redefined);
27
- redefined.clear();
28
- }
29
- function writeVariableCountsToCsv(outputPath, collected) {
30
- const variablesOutStream = node_fs_1.default.createWriteStream(path_1.default.join(outputPath, 'variable-counts.csv'));
31
- variablesOutStream.write(`kind,unique-projects,unique-files,${(0, data_1.summarizedMeasurement2CsvHeader)()}\n`);
32
- for (const [key, val] of Object.entries(collected)) {
33
- if (key === 'unknownVariables') {
34
- // they are for function calls etc and in hindsight not a good idea
35
- continue;
36
- }
37
- const data = val;
38
- const sum = (0, process_1.summarizeMeasurement)(data.count);
39
- variablesOutStream.write(`${JSON.stringify(key)},${data.uniqueProjects.size},${data.uniqueFiles.size},${(0, data_1.summarizedMeasurement2Csv)(sum)}\n`);
40
- }
41
- variablesOutStream.close();
42
- }
43
- function collectInformation(info, config) {
44
- const collected = {};
45
- for (const [filepath, data] of info.entries()) {
46
- const value = data.variables;
47
- for (const [key, val] of Object.entries(value)) {
48
- let get = collected[key];
49
- if (!get) {
50
- get = (0, post_processing_1.emptySummarizedWithProject)();
51
- collected[key] = get;
52
- }
53
- get.count.push(val);
54
- if (val > 0) {
55
- (0, post_processing_1.recordFilePath)(get, filepath, config);
56
- }
57
- }
58
- }
59
- return collected;
60
- }
61
- function postProcess(featureRoot, info, outputPath, config) {
62
- const collected = collectInformation(info, config);
63
- writeVariableCountsToCsv(outputPath, collected);
64
- collectUsedVariables(featureRoot, info, config, outputPath);
65
- collectDefinedVariables(featureRoot, info, config, outputPath);
66
- collectRedefinedVariables(featureRoot, info, config, outputPath);
67
- }
68
- exports.postProcess = postProcess;
69
- function writeVariableInfoToCsv(outputPath, filename, data) {
70
- const out = node_fs_1.default.createWriteStream(path_1.default.join(outputPath, filename));
71
- out.write(`variable,unique-projects,unique-files,${(0, data_1.summarizedMeasurement2CsvHeader)('count')},${(0, data_1.summarizedMeasurement2CsvHeader)('line-frac')}\n`);
72
- for (const [key, val] of data.entries()) {
73
- const { count, uniqueProjects, uniqueFiles, linePercentageInFile } = val;
74
- const counts = (0, process_1.summarizeMeasurement)(count);
75
- const lineFrac = (0, process_1.summarizeMeasurement)(linePercentageInFile.flat());
76
- out.write(`${JSON.stringify(key)},${uniqueProjects.size},${uniqueFiles.size},${(0, data_1.summarizedMeasurement2Csv)(counts)},${(0, data_1.summarizedMeasurement2Csv)(lineFrac)}\n`);
77
- }
78
- out.close();
79
- }
80
- exports.writeVariableInfoToCsv = writeVariableInfoToCsv;
81
- function collectVariableInfoFor(filepath, info, config) {
82
- // variable name to summary
83
- const collected = new Map();
84
- (0, files_1.readLineByLineSync)(filepath, (line, lineNumber) => {
85
- if (line.length === 0) {
86
- return;
87
- }
88
- if (lineNumber % 2_500 === 0) {
89
- console.log(` Processed ${lineNumber} lines of ${filepath}`);
90
- }
91
- const [vars, context] = JSON.parse(line.toString());
92
- const numberOfLines = info.get(context ?? '')?.stats.lines[0].length;
93
- // first we have to collect what this file gives us
94
- const perFile = new Map();
95
- for (const [name, [line]] of vars) {
96
- let get = perFile.get(name);
97
- if (!get) {
98
- get = { ...(0, post_processing_1.emptySummarizedWithProject)(), linePercentageInFile: [] };
99
- perFile.set(name, get);
100
- }
101
- get.count.push(1);
102
- if (numberOfLines) {
103
- get.linePercentageInFile.push(line / numberOfLines);
104
- }
105
- }
106
- // now we merge it into the global map (oh gosh this is so horrible
107
- for (const [name, data] of perFile.entries()) {
108
- let get = collected.get(name);
109
- if (!get) {
110
- get = { ...(0, post_processing_1.emptySummarizedWithProject)(), linePercentageInFile: [] };
111
- collected.set(name, get);
112
- }
113
- get.count.push(data.count.length);
114
- get.linePercentageInFile.push(data.linePercentageInFile);
115
- if (data.count.length > 0) {
116
- (0, post_processing_1.recordFilePath)(get, context, config);
117
- }
118
- }
119
- });
120
- return collected;
121
- }
122
- //# sourceMappingURL=post-process.js.map
@@ -1,15 +0,0 @@
1
- import type { Feature } from '../../feature';
2
- import type { Writable } from 'ts-essentials';
3
- declare const initialVariableInfo: {
4
- numberOfVariableUses: number;
5
- numberOfDefinitions: number;
6
- numberOfRedefinitions: number;
7
- unknownVariables: number;
8
- };
9
- export type VariableInfo = Writable<typeof initialVariableInfo>;
10
- export type DefinedVariableInformation = [
11
- name: string,
12
- location: [line: number, character: number]
13
- ];
14
- export declare const variables: Feature<VariableInfo>;
15
- export {};
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.variables = void 0;
4
- const r_bridge_1 = require("../../../../r-bridge");
5
- const output_1 = require("../../../output");
6
- const dataflow_1 = require("../../../../dataflow");
7
- const post_process_1 = require("./post-process");
8
- const initialVariableInfo = {
9
- numberOfVariableUses: 0,
10
- numberOfDefinitions: 0,
11
- numberOfRedefinitions: 0,
12
- // we failed to get the type/role, maybe for function call names etc.
13
- unknownVariables: 0
14
- };
15
- function visitVariables(info, input) {
16
- // same-def-def edges are bidirectional, we want to avoid counting them twice!
17
- const redefinedBlocker = new Set();
18
- (0, r_bridge_1.visitAst)(input.normalizedRAst.ast, node => {
19
- if (node.type !== "RSymbol" /* RType.Symbol */ || (0, r_bridge_1.isSpecialSymbol)(node)) {
20
- return;
21
- }
22
- // search for the node in the DF graph
23
- const mayNode = input.dataflow.graph.get(node.info.id);
24
- if (mayNode === undefined) {
25
- info.unknownVariables++;
26
- (0, output_1.appendStatisticsFile)(exports.variables.name, 'unknown', [[
27
- node.info.fullLexeme ?? node.lexeme,
28
- [node.location.start.line, node.location.start.column]
29
- ]], input.filepath);
30
- return;
31
- }
32
- const [dfNode, edges] = mayNode;
33
- if (dfNode.tag === 'variable-definition') {
34
- info.numberOfDefinitions++;
35
- const lexeme = node.info.fullLexeme ?? node.lexeme;
36
- (0, output_1.appendStatisticsFile)(exports.variables.name, 'definedVariables', [[
37
- lexeme,
38
- [node.location.start.line, node.location.start.column]
39
- ]], input.filepath);
40
- // check for redefinitions
41
- const hasRedefinitions = [...edges.entries()].some(([target, edge]) => !redefinedBlocker.has(target) && edge.types.has(dataflow_1.EdgeType.SameDefDef));
42
- if (hasRedefinitions) {
43
- info.numberOfRedefinitions++;
44
- redefinedBlocker.add(node.info.id);
45
- (0, output_1.appendStatisticsFile)(exports.variables.name, 'redefinedVariables', [[
46
- lexeme,
47
- [node.location.start.line, node.location.start.column]
48
- ]], input.filepath);
49
- }
50
- }
51
- else if (dfNode.tag === 'use') {
52
- info.numberOfVariableUses++;
53
- (0, output_1.appendStatisticsFile)(exports.variables.name, 'usedVariables', [[
54
- node.info.fullLexeme ?? node.lexeme,
55
- [node.location.start.line, node.location.start.column]
56
- ]], input.filepath);
57
- }
58
- });
59
- }
60
- exports.variables = {
61
- name: 'Variables',
62
- description: 'Variable Usage, Assignments, and Redefinitions',
63
- process(existing, input) {
64
- visitVariables(existing, input);
65
- return existing;
66
- },
67
- initialValue: initialVariableInfo,
68
- postProcess: post_process_1.postProcess
69
- };
70
- //# sourceMappingURL=variables.js.map
@@ -1,6 +0,0 @@
1
- export * from './statistics';
2
- export * from './features';
3
- export * from './output';
4
- export * from '../util/summarizer/statistics/post-process';
5
- export { initialMetaStatistics } from './meta-statistics';
6
- export { MetaStatistics } from './meta-statistics';
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.initialMetaStatistics = void 0;
18
- __exportStar(require("./statistics"), exports);
19
- __exportStar(require("./features"), exports);
20
- __exportStar(require("./output"), exports);
21
- __exportStar(require("../util/summarizer/statistics/post-process"), exports);
22
- var meta_statistics_1 = require("./meta-statistics");
23
- Object.defineProperty(exports, "initialMetaStatistics", { enumerable: true, get: function () { return meta_statistics_1.initialMetaStatistics; } });
24
- //# sourceMappingURL=index.js.map
@@ -1,33 +0,0 @@
1
- import type { RParseRequestFromFile, RParseRequestFromText } from '../r-bridge';
2
- /**
3
- * Statistics on skipped files, the time required, and more.
4
- *
5
- * @see extractUsageStatistics
6
- * @see initialMetaStatistics
7
- */
8
- export interface MetaStatistics {
9
- /**
10
- * The number of requests that were parsed successfully
11
- */
12
- successfulParsed: number;
13
- /**
14
- * The processing time for each request
15
- */
16
- processingTimeMs: number[];
17
- /**
18
- * All failed requests (e.g., if they can not be converted to XML)
19
- */
20
- failedRequests: (RParseRequestFromText | RParseRequestFromFile)[];
21
- /**
22
- * Number of lines with each individual line length consumed for each request
23
- */
24
- lines: number[][];
25
- /**
26
- * The number of nodes in the normalized AST
27
- */
28
- numberOfNormalizedNodes: number[];
29
- }
30
- /**
31
- * Returns an initial {@link MetaStatistics} object, using neutral defaults (like the empty list).
32
- */
33
- export declare function initialMetaStatistics(): MetaStatistics;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialMetaStatistics = void 0;
4
- /**
5
- * Returns an initial {@link MetaStatistics} object, using neutral defaults (like the empty list).
6
- */
7
- function initialMetaStatistics() {
8
- return {
9
- successfulParsed: 0,
10
- numberOfNormalizedNodes: [],
11
- processingTimeMs: [],
12
- failedRequests: [],
13
- lines: []
14
- };
15
- }
16
- exports.initialMetaStatistics = initialMetaStatistics;
17
- //# sourceMappingURL=meta-statistics.js.map