@eagleoutice/flowr 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +27 -0
- package/benchmark/benchmark-slicer.js +223 -0
- package/benchmark/index.d.ts +3 -0
- package/benchmark/index.js +20 -0
- package/benchmark/slicer.d.ts +100 -0
- package/benchmark/slicer.js +223 -0
- package/benchmark/stats/index.d.ts +10 -0
- package/benchmark/stats/index.js +27 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +157 -0
- package/benchmark/stats/stats.d.ts +41 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/cli/benchmark-app.d.ts +9 -0
- package/cli/benchmark-app.js +52 -0
- package/cli/benchmark-helper-app.d.ts +7 -0
- package/cli/benchmark-helper-app.js +60 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/index.d.ts +2 -0
- package/cli/common/index.js +19 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +82 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +24 -0
- package/cli/common/scripts-info.js +69 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +46 -0
- package/cli/repl/commands/cfg.d.ts +3 -0
- package/cli/repl/commands/cfg.js +37 -0
- package/cli/repl/commands/commands.d.ts +11 -0
- package/cli/repl/commands/commands.js +103 -0
- package/cli/repl/commands/dataflow.d.ts +3 -0
- package/cli/repl/commands/dataflow.js +34 -0
- package/cli/repl/commands/execute.d.ts +4 -0
- package/cli/repl/commands/execute.js +27 -0
- package/cli/repl/commands/index.d.ts +2 -0
- package/cli/repl/commands/index.js +19 -0
- package/cli/repl/commands/main.d.ts +39 -0
- package/cli/repl/commands/main.js +14 -0
- package/cli/repl/commands/normalize.d.ts +3 -0
- package/cli/repl/commands/normalize.js +34 -0
- package/cli/repl/commands/parse.d.ts +2 -0
- package/cli/repl/commands/parse.js +109 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +12 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +33 -0
- package/cli/repl/core.d.ts +41 -0
- package/cli/repl/core.js +89 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/index.d.ts +5 -0
- package/cli/repl/index.js +22 -0
- package/cli/repl/prompt.d.ts +2 -0
- package/cli/repl/prompt.js +9 -0
- package/cli/repl/server/connection.d.ts +21 -0
- package/cli/repl/server/connection.js +217 -0
- package/cli/repl/server/messages/analysis.d.ts +71 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/cli/repl/server/messages/error.js +3 -0
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/cli/repl/server/messages/hello.js +3 -0
- package/cli/repl/server/messages/index.d.ts +1 -0
- package/cli/repl/server/messages/index.js +3 -0
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +20 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +17 -0
- package/cli/repl/server/messages/slice.d.ts +25 -0
- package/cli/repl/server/messages/slice.js +17 -0
- package/cli/repl/server/net.d.ts +33 -0
- package/cli/repl/server/net.js +24 -0
- package/cli/repl/server/send.d.ts +4 -0
- package/cli/repl/server/send.js +18 -0
- package/cli/repl/server/server.d.ts +20 -0
- package/cli/repl/server/server.js +66 -0
- package/cli/repl/server/validate.d.ts +15 -0
- package/cli/repl/server/validate.js +34 -0
- package/cli/slicer-app.d.ts +11 -0
- package/cli/slicer-app.js +81 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +98 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +83 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +67 -0
- package/core/index.d.ts +4 -0
- package/core/index.js +23 -0
- package/core/input.d.ts +42 -0
- package/core/input.js +3 -0
- package/core/output.d.ts +15 -0
- package/core/output.js +3 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +8 -0
- package/core/print/dataflow-printer.js +62 -0
- package/core/print/normalize-printer.d.ts +7 -0
- package/core/print/normalize-printer.js +31 -0
- package/core/print/parse-printer.d.ts +3 -0
- package/core/print/parse-printer.js +29 -0
- package/core/print/print.d.ts +47 -0
- package/core/print/print.js +13 -0
- package/core/print/slice-diff-ansi.d.ts +2 -0
- package/core/print/slice-diff-ansi.js +49 -0
- package/core/slicer.d.ts +123 -0
- package/core/slicer.js +227 -0
- package/core/stepping-slicer.js +160 -0
- package/core/steps/all/00-parse.js +19 -0
- package/core/steps/all/10-normalize.js +21 -0
- package/core/steps/all/20-dataflow.js +21 -0
- package/core/steps/all/30-slice.js +16 -0
- package/core/steps/all/40-reconstruct.js +16 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.js +46 -0
- package/core/steps/all/core/20-dataflow.js +39 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/index.js +21 -0
- package/core/steps/input.js +3 -0
- package/core/steps/output.js +3 -0
- package/core/steps/pipeline/create.js +130 -0
- package/core/steps/pipeline/default.js +15 -0
- package/core/steps/pipeline/dependency-checker.js +76 -0
- package/core/steps/pipeline/index.js +20 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/step.js +8 -0
- package/core/steps/steps-provider.js +3 -0
- package/core/steps/steps.js +35 -0
- package/core/steps.d.ts +166 -0
- package/core/steps.js +99 -0
- package/dataflow/common/environments/append.js +48 -0
- package/dataflow/common/environments/environment.js +165 -0
- package/dataflow/common/environments/index.js +23 -0
- package/dataflow/common/environments/overwrite.js +82 -0
- package/dataflow/common/environments/register.js +49 -0
- package/dataflow/common/environments/resolve-by-name.js +35 -0
- package/dataflow/common/environments/scopes.js +6 -0
- package/dataflow/common/environments/scoping.js +27 -0
- package/dataflow/environments/append.d.ts +8 -0
- package/dataflow/environments/append.js +48 -0
- package/dataflow/environments/environment.d.ts +78 -0
- package/dataflow/environments/environment.js +161 -0
- package/dataflow/environments/index.d.ts +7 -0
- package/dataflow/environments/index.js +23 -0
- package/dataflow/environments/overwrite.d.ts +6 -0
- package/dataflow/environments/overwrite.js +82 -0
- package/dataflow/environments/register.d.ts +7 -0
- package/dataflow/environments/register.js +39 -0
- package/dataflow/environments/resolve-by-name.d.ts +12 -0
- package/dataflow/environments/resolve-by-name.js +35 -0
- package/dataflow/environments/scopes.d.ts +6 -0
- package/dataflow/environments/scopes.js +6 -0
- package/dataflow/environments/scoping.d.ts +4 -0
- package/dataflow/environments/scoping.js +27 -0
- package/dataflow/extractor.d.ts +6 -0
- package/dataflow/extractor.js +60 -0
- package/dataflow/graph/diff.d.ts +18 -0
- package/dataflow/graph/diff.js +206 -0
- package/dataflow/graph/edge.d.ts +37 -0
- package/dataflow/graph/edge.js +32 -0
- package/dataflow/graph/equal.js +127 -0
- package/dataflow/graph/graph.d.ts +120 -0
- package/dataflow/graph/graph.js +298 -0
- package/dataflow/graph/index.d.ts +4 -0
- package/dataflow/graph/index.js +21 -0
- package/dataflow/graph/quads.d.ts +8 -0
- package/dataflow/graph/quads.js +27 -0
- package/dataflow/graph/vertex.d.ts +86 -0
- package/dataflow/graph/vertex.js +3 -0
- package/dataflow/index.d.ts +5 -0
- package/dataflow/index.js +24 -0
- package/dataflow/internal/info.d.ts +21 -0
- package/dataflow/internal/info.js +16 -0
- package/dataflow/internal/linker.d.ts +41 -0
- package/dataflow/internal/linker.js +255 -0
- package/dataflow/internal/process/access.d.ts +4 -0
- package/dataflow/internal/process/access.js +53 -0
- package/dataflow/internal/process/expression-list.d.ts +8 -0
- package/dataflow/internal/process/expression-list.js +148 -0
- package/dataflow/internal/process/functions/argument.d.ts +8 -0
- package/dataflow/internal/process/functions/argument.js +46 -0
- package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
- package/dataflow/internal/process/functions/exit-points.js +121 -0
- package/dataflow/internal/process/functions/function-call.d.ts +5 -0
- package/dataflow/internal/process/functions/function-call.js +99 -0
- package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
- package/dataflow/internal/process/functions/function-definition.js +176 -0
- package/dataflow/internal/process/functions/parameter.d.ts +4 -0
- package/dataflow/internal/process/functions/parameter.js +47 -0
- package/dataflow/internal/process/if-then-else.d.ts +4 -0
- package/dataflow/internal/process/if-then-else.js +56 -0
- package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/for-loop.js +54 -0
- package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
- package/dataflow/internal/process/loops/while-loop.js +31 -0
- package/dataflow/internal/process/operators/assignment.d.ts +4 -0
- package/dataflow/internal/process/operators/assignment.js +129 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/internal/process/operators/pipe.d.ts +4 -0
- package/dataflow/internal/process/operators/pipe.js +46 -0
- package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
- package/dataflow/internal/process/operators/unary-op.js +10 -0
- package/dataflow/internal/process/symbol.d.ts +4 -0
- package/dataflow/internal/process/symbol.js +21 -0
- package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/processor.d.ts +47 -0
- package/dataflow/processor.js +20 -0
- package/dataflow/v1/extractor.js +60 -0
- package/dataflow/v1/graph/diff.js +206 -0
- package/dataflow/v1/graph/edge.js +32 -0
- package/dataflow/v1/graph/graph.js +298 -0
- package/dataflow/v1/graph/index.js +21 -0
- package/dataflow/v1/graph/quads.js +27 -0
- package/dataflow/v1/graph/vertex.js +3 -0
- package/dataflow/v1/index.js +24 -0
- package/dataflow/v1/internal/info.js +16 -0
- package/dataflow/v1/internal/linker.js +255 -0
- package/dataflow/v1/internal/process/access.js +54 -0
- package/dataflow/v1/internal/process/expression-list.js +154 -0
- package/dataflow/v1/internal/process/functions/argument.js +46 -0
- package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
- package/dataflow/v1/internal/process/functions/function-call.js +99 -0
- package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
- package/dataflow/v1/internal/process/functions/parameter.js +47 -0
- package/dataflow/v1/internal/process/if-then-else.js +57 -0
- package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
- package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
- package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
- package/dataflow/v1/internal/process/operators/assignment.js +129 -0
- package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
- package/dataflow/v1/internal/process/operators/pipe.js +46 -0
- package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
- package/dataflow/v1/internal/process/symbol.js +21 -0
- package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
- package/dataflow/v1/processor.js +20 -0
- package/dataflow/v2/entry.js +11 -0
- package/flowr-1.3.7.tgz +0 -0
- package/flowr.d.ts +26 -0
- package/flowr.js +135 -0
- package/index.d.ts +6 -0
- package/index.js +23 -0
- package/package.json +384 -0
- package/r-bridge/index.d.ts +11 -0
- package/r-bridge/index.js +28 -0
- package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/index.js +19 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
- package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/index.js +23 -0
- package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
- package/r-bridge/lang-4.x/ast/model/model.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
- package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
- package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
- package/r-bridge/lang-4.x/ast/model/type.js +18 -0
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
- package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
- package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
- package/r-bridge/lang-4.x/index.d.ts +2 -0
- package/r-bridge/lang-4.x/index.js +19 -0
- package/r-bridge/lang-4.x/values.d.ts +39 -0
- package/r-bridge/lang-4.x/values.js +149 -0
- package/r-bridge/retriever.d.ts +48 -0
- package/r-bridge/retriever.js +71 -0
- package/r-bridge/shell.d.ts +147 -0
- package/r-bridge/shell.js +423 -0
- package/reconstruct/reconstruct.d.ts +28 -0
- package/reconstruct/reconstruct.js +448 -0
- package/slicing/criterion/collect-all.d.ts +36 -0
- package/slicing/criterion/collect-all.js +23 -0
- package/slicing/criterion/filters/all-variables.d.ts +2 -0
- package/slicing/criterion/filters/all-variables.js +63 -0
- package/slicing/criterion/filters/index.d.ts +1 -0
- package/slicing/criterion/filters/index.js +18 -0
- package/slicing/criterion/index.d.ts +3 -0
- package/slicing/criterion/index.js +20 -0
- package/slicing/criterion/parse.d.ts +20 -0
- package/slicing/criterion/parse.js +79 -0
- package/slicing/index.d.ts +3 -0
- package/slicing/index.js +20 -0
- package/slicing/static/index.d.ts +1 -0
- package/slicing/static/index.js +18 -0
- package/slicing/static/static-slicer.d.ts +29 -0
- package/slicing/static/static-slicer.js +186 -0
- package/statistics/features/common-syntax-probability.d.ts +30 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +175 -0
- package/statistics/features/feature.js +30 -0
- package/statistics/features/index.d.ts +1 -0
- package/statistics/features/index.js +18 -0
- package/statistics/features/post-processing.d.ts +12 -0
- package/statistics/features/post-processing.js +21 -0
- package/statistics/features/supported/assignments/assignments.d.ts +11 -0
- package/statistics/features/supported/assignments/assignments.js +53 -0
- package/statistics/features/supported/assignments/index.d.ts +1 -0
- package/statistics/features/supported/assignments/index.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +125 -0
- package/statistics/features/supported/comments/comments.d.ts +18 -0
- package/statistics/features/supported/comments/comments.js +133 -0
- package/statistics/features/supported/comments/index.d.ts +1 -0
- package/statistics/features/supported/comments/index.js +6 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +50 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +67 -0
- package/statistics/features/supported/control-flow/index.d.ts +1 -0
- package/statistics/features/supported/control-flow/index.js +6 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +65 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +118 -0
- package/statistics/features/supported/data-access/index.d.ts +1 -0
- package/statistics/features/supported/data-access/index.js +6 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +107 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
- package/statistics/features/supported/defined-functions/index.d.ts +1 -0
- package/statistics/features/supported/defined-functions/index.js +6 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +177 -0
- package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
- package/statistics/features/supported/expression-list/expression-list.js +36 -0
- package/statistics/features/supported/expression-list/index.d.ts +1 -0
- package/statistics/features/supported/expression-list/index.js +6 -0
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +44 -0
- package/statistics/features/supported/index.d.ts +10 -0
- package/statistics/features/supported/index.js +27 -0
- package/statistics/features/supported/loops/index.d.ts +1 -0
- package/statistics/features/supported/loops/index.js +6 -0
- package/statistics/features/supported/loops/loops.d.ts +20 -0
- package/statistics/features/supported/loops/loops.js +79 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +72 -0
- package/statistics/features/supported/used-functions/index.d.ts +1 -0
- package/statistics/features/supported/used-functions/index.js +6 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +179 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +95 -0
- package/statistics/features/supported/used-packages/index.d.ts +1 -0
- package/statistics/features/supported/used-packages/index.js +6 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +121 -0
- package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
- package/statistics/features/supported/used-packages/used-packages.js +130 -0
- package/statistics/features/supported/values/index.d.ts +1 -0
- package/statistics/features/supported/values/index.js +6 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +72 -0
- package/statistics/features/supported/values/values.d.ts +14 -0
- package/statistics/features/supported/values/values.js +101 -0
- package/statistics/features/supported/variables/index.d.ts +1 -0
- package/statistics/features/supported/variables/index.js +6 -0
- package/statistics/features/supported/variables/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +122 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +70 -0
- package/statistics/index.d.ts +6 -0
- package/statistics/index.js +24 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/ansi.d.ts +50 -0
- package/statistics/output/ansi.js +58 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -0
- package/statistics/output/index.d.ts +4 -0
- package/statistics/output/index.js +21 -0
- package/statistics/output/print-stats.d.ts +17 -0
- package/statistics/output/print-stats.js +69 -0
- package/statistics/output/statistics-file.d.ts +37 -0
- package/statistics/output/statistics-file.js +69 -0
- package/statistics/statistics.d.ts +24 -0
- package/statistics/statistics.js +109 -0
- package/util/args.d.ts +14 -0
- package/util/args.js +67 -0
- package/util/arrays.d.ts +44 -0
- package/util/arrays.js +145 -0
- package/util/assert.d.ts +11 -0
- package/util/assert.js +35 -0
- package/util/bimap.d.ts +24 -0
- package/util/bimap.js +71 -0
- package/util/cfg.d.ts +55 -0
- package/util/cfg.js +498 -0
- package/util/defaultmap.d.ts +34 -0
- package/util/defaultmap.js +65 -0
- package/util/diff.d.ts +43 -0
- package/util/diff.js +28 -0
- package/util/files.d.ts +54 -0
- package/util/files.js +144 -0
- package/util/json.d.ts +2 -0
- package/util/json.js +28 -0
- package/util/log.d.ts +22 -0
- package/util/log.js +48 -0
- package/util/mermaid/ast.d.ts +6 -0
- package/util/mermaid/ast.js +28 -0
- package/util/mermaid/cfg.d.ts +7 -0
- package/util/mermaid/cfg.js +44 -0
- package/util/mermaid/dfg.d.ts +21 -0
- package/util/mermaid/dfg.js +165 -0
- package/util/mermaid/index.d.ts +3 -0
- package/util/mermaid/index.js +20 -0
- package/util/mermaid/mermaid.d.ts +7 -0
- package/util/mermaid/mermaid.js +24 -0
- package/util/numbers.d.ts +1 -0
- package/util/numbers.js +9 -0
- package/util/objects.d.ts +17 -0
- package/util/objects.js +60 -0
- package/util/os.d.ts +2 -0
- package/util/os.js +25 -0
- package/util/parallel.d.ts +30 -0
- package/util/parallel.js +103 -0
- package/util/quads.d.ts +92 -0
- package/util/quads.js +189 -0
- package/util/random.d.ts +4 -0
- package/util/random.js +22 -0
- package/util/range.d.ts +32 -0
- package/util/range.js +61 -0
- package/util/set.d.ts +8 -0
- package/util/set.js +32 -0
- package/util/strings.d.ts +12 -0
- package/util/strings.js +41 -0
- package/util/summarizer/auto-detect.d.ts +2 -0
- package/util/summarizer/auto-detect.js +32 -0
- package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
- package/util/summarizer/benchmark/data.d.ts +66 -0
- package/util/summarizer/benchmark/data.js +13 -0
- package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
- package/util/summarizer/benchmark/first-phase/input.js +59 -0
- package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
- package/util/summarizer/benchmark/first-phase/process.js +208 -0
- package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
- package/util/summarizer/benchmark/second-phase/graph.js +54 -0
- package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
- package/util/summarizer/benchmark/second-phase/process.js +89 -0
- package/util/summarizer/benchmark/summarizer.d.ts +34 -0
- package/util/summarizer/benchmark/summarizer.js +53 -0
- package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
- package/util/summarizer/statistics/first-phase/process.js +81 -0
- package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
- package/util/summarizer/statistics/post-process/clusterer.js +43 -0
- package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
- package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
- package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
- package/util/summarizer/statistics/post-process/histogram.js +128 -0
- package/util/summarizer/statistics/post-process/index.d.ts +4 -0
- package/util/summarizer/statistics/post-process/index.js +21 -0
- package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
- package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
- package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
- package/util/summarizer/statistics/second-phase/process.js +117 -0
- package/util/summarizer/statistics/summarizer.d.ts +34 -0
- package/util/summarizer/statistics/summarizer.js +135 -0
- package/util/summarizer/summarizer.d.ts +25 -0
- package/util/summarizer/summarizer.js +13 -0
- package/util/time.d.ts +6 -0
- package/util/time.js +13 -0
|
@@ -0,0 +1,72 @@
|
|
|
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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Feature } from '../../feature';
|
|
2
|
+
import { 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 {};
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { variables } from './variables';
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FeatureStatisticsWithMeta } from '../../feature';
|
|
2
|
+
import { StatisticsSummarizerConfiguration } from '../../../../util/summarizer/statistics/summarizer';
|
|
3
|
+
import { 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 {};
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Feature } from '../../feature';
|
|
2
|
+
import { 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 {};
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { 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;
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare const enum FontStyles {
|
|
2
|
+
Bold = 1,
|
|
3
|
+
Faint = 2,
|
|
4
|
+
Italic = 3,
|
|
5
|
+
Underline = 4
|
|
6
|
+
}
|
|
7
|
+
export declare const enum Colors {
|
|
8
|
+
Black = 0,
|
|
9
|
+
Red = 1,
|
|
10
|
+
Green = 2,
|
|
11
|
+
Yellow = 3,
|
|
12
|
+
Blue = 4,
|
|
13
|
+
Magenta = 5,
|
|
14
|
+
Cyan = 6,
|
|
15
|
+
White = 7
|
|
16
|
+
}
|
|
17
|
+
export declare enum ColorEffect {
|
|
18
|
+
Foreground = 30,
|
|
19
|
+
Background = 40
|
|
20
|
+
}
|
|
21
|
+
export type FormatOptions = ColorFormatOptions | WeightFormatOptions | ColorFormatOptions & WeightFormatOptions;
|
|
22
|
+
export interface ColorFormatOptions {
|
|
23
|
+
color: Colors;
|
|
24
|
+
effect: ColorEffect;
|
|
25
|
+
}
|
|
26
|
+
export interface WeightFormatOptions {
|
|
27
|
+
style: FontStyles;
|
|
28
|
+
}
|
|
29
|
+
export interface OutputFormatter {
|
|
30
|
+
format(input: string, options?: FormatOptions): string;
|
|
31
|
+
getFormatString(options?: FormatOptions): string;
|
|
32
|
+
reset(): string;
|
|
33
|
+
}
|
|
34
|
+
export declare const voidFormatter: OutputFormatter;
|
|
35
|
+
/**
|
|
36
|
+
* This does not work if the {@link setFormatter | formatter} is void. Tries to format the text with a bold font weight.
|
|
37
|
+
*/
|
|
38
|
+
export declare function italic(s: string, f?: OutputFormatter, options?: FormatOptions): string;
|
|
39
|
+
/**
|
|
40
|
+
* This does not work if the {@link setFormatter | formatter} is void. Tries to format the text with an italic font shape.
|
|
41
|
+
*/
|
|
42
|
+
export declare function bold(s: string, f?: OutputFormatter, options?: FormatOptions): string;
|
|
43
|
+
export declare const escape = "\u001B[";
|
|
44
|
+
export declare const ansiFormatter: {
|
|
45
|
+
reset(): string;
|
|
46
|
+
format(input: string, options?: FormatOptions): string;
|
|
47
|
+
getFormatString(options?: FormatOptions): string;
|
|
48
|
+
};
|
|
49
|
+
export declare let formatter: OutputFormatter;
|
|
50
|
+
export declare function setFormatter(setFormatter: OutputFormatter): void;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setFormatter = exports.formatter = exports.ansiFormatter = exports.escape = exports.bold = exports.italic = exports.voidFormatter = exports.ColorEffect = void 0;
|
|
4
|
+
// noinspection JSUnusedGlobalSymbols
|
|
5
|
+
var ColorEffect;
|
|
6
|
+
(function (ColorEffect) {
|
|
7
|
+
ColorEffect[ColorEffect["Foreground"] = 30] = "Foreground";
|
|
8
|
+
ColorEffect[ColorEffect["Background"] = 40] = "Background";
|
|
9
|
+
})(ColorEffect || (exports.ColorEffect = ColorEffect = {}));
|
|
10
|
+
exports.voidFormatter = new class {
|
|
11
|
+
format(input) {
|
|
12
|
+
return input;
|
|
13
|
+
}
|
|
14
|
+
getFormatString(_options) {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
reset() {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* This does not work if the {@link setFormatter | formatter} is void. Tries to format the text with a bold font weight.
|
|
23
|
+
*/
|
|
24
|
+
function italic(s, f = exports.formatter, options) {
|
|
25
|
+
return f.format(s, { style: 3 /* FontStyles.Italic */, ...options });
|
|
26
|
+
}
|
|
27
|
+
exports.italic = italic;
|
|
28
|
+
/**
|
|
29
|
+
* This does not work if the {@link setFormatter | formatter} is void. Tries to format the text with an italic font shape.
|
|
30
|
+
*/
|
|
31
|
+
function bold(s, f = exports.formatter, options) {
|
|
32
|
+
return f.format(s, { style: 1 /* FontStyles.Bold */, ...options });
|
|
33
|
+
}
|
|
34
|
+
exports.bold = bold;
|
|
35
|
+
exports.escape = '\x1b[';
|
|
36
|
+
const colorSuffix = 'm';
|
|
37
|
+
exports.ansiFormatter = {
|
|
38
|
+
reset() {
|
|
39
|
+
return `${exports.escape}0${colorSuffix}`;
|
|
40
|
+
},
|
|
41
|
+
format(input, options) {
|
|
42
|
+
return `${this.getFormatString(options)}${input}${this.reset()}`;
|
|
43
|
+
},
|
|
44
|
+
getFormatString(options) {
|
|
45
|
+
if (options === undefined) {
|
|
46
|
+
return '';
|
|
47
|
+
}
|
|
48
|
+
const colorString = 'color' in options ? `${options.effect + options.color}` : '';
|
|
49
|
+
const weightString = 'style' in options ? `${options.style}` : '';
|
|
50
|
+
return `${exports.escape}${colorString}${weightString !== '' ? ';' : ''}${weightString}${colorSuffix}`;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
exports.formatter = exports.ansiFormatter;
|
|
54
|
+
function setFormatter(setFormatter) {
|
|
55
|
+
exports.formatter = setFormatter;
|
|
56
|
+
}
|
|
57
|
+
exports.setFormatter = setFormatter;
|
|
58
|
+
//# sourceMappingURL=ansi.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type AppendFnType = string | number | symbol;
|
|
2
|
+
export interface StatisticAppendProvider {
|
|
3
|
+
append(name: string, fn: AppendFnType, content: string): void;
|
|
4
|
+
}
|
|
5
|
+
export type DummyAppendMemoryMap = Map<string, Map<AppendFnType, string[]>>;
|
|
6
|
+
export declare class DummyAppendProvider implements StatisticAppendProvider {
|
|
7
|
+
private readonly map;
|
|
8
|
+
/**
|
|
9
|
+
* If you pass a map the dummy will log all append calls to the map, using the feature name and the appendage type as keys
|
|
10
|
+
*
|
|
11
|
+
* @param map - The map to log to
|
|
12
|
+
*/
|
|
13
|
+
constructor(map?: DummyAppendMemoryMap | undefined);
|
|
14
|
+
append(name: string, fn: AppendFnType, content: string): void;
|
|
15
|
+
}
|
|
16
|
+
export declare const defaultStatisticsFileSuffix = ".txt";
|
|
17
|
+
/**
|
|
18
|
+
* Provides cached open connections for all files to connect.
|
|
19
|
+
* allowing to append to the same file often.
|
|
20
|
+
* <p>
|
|
21
|
+
* While we could simply reopen these files, it is safer/more performant to keep the connection open.
|
|
22
|
+
*/
|
|
23
|
+
export declare class StatisticFileProvider implements StatisticAppendProvider {
|
|
24
|
+
readonly statisticsDirectory: string;
|
|
25
|
+
private readonly connections;
|
|
26
|
+
constructor(statisticsDirectory: string | undefined);
|
|
27
|
+
/**
|
|
28
|
+
* @param name - the name of the feature {@link Feature#name}
|
|
29
|
+
* @param fn - the name of the feature-aspect to record
|
|
30
|
+
*/
|
|
31
|
+
private statisticsFile;
|
|
32
|
+
/**
|
|
33
|
+
* Append the given content to the information for a feature of the given name and function.
|
|
34
|
+
*/
|
|
35
|
+
append(name: string, fn: AppendFnType, content: string): void;
|
|
36
|
+
private getHandle;
|
|
37
|
+
}
|