UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

442 lines (441 loc) 17.4 kB
/** * This interface describes options, that every script *must* provide. */ export interface CommonOptions { /** Enables the most verbose logging option available. */ verbose: boolean; /** * Shows the respective help including usage examples, * see {@link processCommandLineArgs} or {@link helpForOptions} for more information. */ help: boolean; } export declare const benchmarkOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging [do not use for the real benchmark as this affects the time measurements, but only to find errors]"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "limit"; readonly alias: "l"; readonly type: NumberConstructor; readonly description: "Limit the number of files to process (if given, this will choose these files randomly and add the chosen names to the output"; }, { readonly name: "runs"; readonly alias: "r"; readonly type: NumberConstructor; readonly description: "The amount of benchmark runs that should be done, out of which an average will be calculated"; }, { readonly name: "seed"; readonly type: StringConstructor; readonly description: "The random seed for sampling the files if a limit is set, and for sampling the slicing criteria if a maximum is set"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "Pass a folder or file as src to read from. Alternatively, pass a single JSON file that contains a list of paths."; readonly multiple: true; readonly defaultOption: true; readonly defaultValue: readonly []; readonly typeLabel: "{underline files/folders}"; }, { readonly name: "parallel"; readonly alias: "p"; readonly type: StringConstructor; readonly description: "Number of parallel executors (defaults to {italic max(cpu.count-1, 1)})"; readonly defaultValue: number; readonly typeLabel: "{underline number}"; }, { readonly name: "slice"; readonly alias: "s"; readonly type: StringConstructor; readonly description: "Automatically slice for *all* variables (default) or *no* slicing and only parsing/dataflow construction. Numbers will indicate: sample X random slices from all."; readonly defaultValue: "all"; readonly typeLabel: "{underline all/no}"; }, { readonly name: "output"; readonly alias: "o"; readonly type: StringConstructor; readonly description: `Folder to write all the measurements to in a per-file-basis (defaults to {italic benchmark-${string}})`; readonly defaultValue: `benchmark-${string}`; readonly typeLabel: "{underline folder}"; }, { readonly name: "parser"; readonly type: StringConstructor; readonly description: "The parser to use for the benchmark"; readonly defaultValue: "r-shell"; readonly typeLabel: "{underline parser}"; }, { readonly name: "dataframe-shape-inference"; readonly type: BooleanConstructor; readonly description: "Infer the shape of data frames using abstract interpretation (includes control flow graph extraction)"; readonly defaultValue: false; }, { readonly name: "max-file-slices"; readonly type: NumberConstructor; readonly description: "If file has more than passed number of slices, the file is not processed"; readonly defaultValue: -1; readonly typeLabel: "{underline number}"; }, { readonly name: "threshold"; readonly alias: "t"; readonly type: NumberConstructor; readonly description: "How many re-visits of the same node are ok?"; readonly defaultValue: undefined; readonly typeLabel: "{underline number}"; }, { readonly name: "per-file-time-limit"; readonly type: NumberConstructor; readonly description: "Time limit in milliseconds to process single file (disabled by default)"; readonly defaultValue: undefined; readonly typeLabel: "{underline number}"; }, { readonly name: "sampling-strategy"; readonly type: StringConstructor; readonly description: "Which strategy to use, when sampling is enabled"; readonly defaultValue: "random"; readonly typeLabel: "{underline random/equidistant}"; }, { readonly name: "cfg"; readonly alias: "c"; readonly type: BooleanConstructor; readonly description: "Extract the control flow graph of the file (benchmark it too)"; }, { readonly name: "cg"; readonly type: BooleanConstructor; readonly description: "Extract the call graph of the file (benchmark it too)"; }]; export declare const benchmarkHelperOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging [do not use for the real benchmark as this affects the time measurements, but only to find errors]"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "Pass a single file as src to read from"; readonly multiple: false; readonly defaultOption: true; readonly typeLabel: "{underline file}"; }, { readonly name: "file-id"; readonly alias: "d"; readonly type: NumberConstructor; readonly description: "A numeric file id that can be used to match an input and run-num to a file"; }, { readonly name: "run-num"; readonly alias: "r"; readonly type: NumberConstructor; readonly description: "The n-th time that the file with the given file-id is being benchmarked"; }, { readonly name: "slice"; readonly alias: "s"; readonly type: StringConstructor; readonly description: "Automatically slice for *all* variables (default) or *no* slicing and only parsing/dataflow construction. Numbers will indicate: sample X random slices from all."; readonly defaultValue: "all"; readonly typeLabel: "{underline all/no}"; }, { readonly name: "cfg"; readonly alias: "c"; readonly type: BooleanConstructor; readonly description: "Extract the control flow graph of the file (benchmark it too)"; }, { readonly name: "cg"; readonly type: BooleanConstructor; readonly description: "Extract the call graph of the file (benchmark it too)"; }, { readonly name: "output"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "File to write the measurements to (appends a single line in JSON format)"; readonly typeLabel: "{underline file}"; }, { readonly name: "parser"; readonly type: StringConstructor; readonly description: "The parser to use for the benchmark"; readonly defaultValue: "r-shell"; readonly typeLabel: "{underline parser}"; }, { readonly name: "dataframe-shape-inference"; readonly type: BooleanConstructor; readonly description: "Infer the shape of data frames using abstract interpretation (includes control flow graph extraction)"; readonly defaultValue: false; }, { readonly name: "max-slices"; readonly type: NumberConstructor; readonly description: "If file has more than passed number of slices, the file is not processed"; readonly defaultValue: -1; readonly typeLabel: "{underline number}"; }, { readonly name: "threshold"; readonly alias: "t"; readonly type: NumberConstructor; readonly description: "How many re-visits of the same node are ok?"; readonly defaultValue: undefined; readonly typeLabel: "{underline number}"; }, { readonly name: "sampling-strategy"; readonly type: StringConstructor; readonly description: "Which strategy to use, when sampling is enabled"; readonly defaultValue: "random"; readonly typeLabel: "{underline random/equidistant}"; }, { readonly name: "seed"; readonly type: StringConstructor; readonly description: "The random seed for sampling the slicing criteria if a maximum is set"; }]; export declare const exportQuadsOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "Pass a folder or file as src to read from"; readonly multiple: true; readonly defaultOption: true; readonly defaultValue: readonly []; readonly typeLabel: "{underline files/folders}"; }, { readonly name: "limit"; readonly alias: "l"; readonly type: NumberConstructor; readonly description: "Limit the number of files to process"; }, { readonly name: "output"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "File to write all the generated quads to (defaults to {italic out.quads})"; readonly typeLabel: "{underline file}"; }]; export declare const slicerOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "(Required) Pass a single file to slice"; readonly multiple: false; readonly defaultOption: true; readonly typeLabel: "{underline files}"; }, { readonly name: "input-is-text"; readonly alias: "r"; readonly type: BooleanConstructor; readonly description: "Indicate, that the input is *not* a file, but R code to directly consume"; }, { readonly name: "diff"; readonly alias: "d"; readonly type: BooleanConstructor; readonly description: "This requires ansi-output and only works if the api option is not set. It visualizes the slice as a diff."; }, { readonly name: "criterion"; readonly alias: "c"; readonly type: StringConstructor; readonly description: "(Required) Slicing criterion either in the form {underline line:col} or {underline line@variable}, multiple can be separated by '{bold ;}'. If you do not want to slice but only process the file, pass an empty string."; readonly multiple: false; }, { readonly name: "stats"; readonly alias: "s"; readonly type: BooleanConstructor; readonly description: "Print stats and write them to {italic <output>.stats} (runtimes etc.)"; readonly multiple: false; }, { readonly name: "output"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "File to write all the generated quads to (defaults to the commandline)"; readonly typeLabel: "{underline file}"; }, { readonly name: "no-magic-comments"; readonly alias: "m"; readonly type: BooleanConstructor; readonly description: "Disable the effects of magic comments which force lines to be included."; }, { readonly name: "api"; readonly type: BooleanConstructor; readonly description: "Instead of human-readable output, dump a lot of json with the results of all intermediate steps."; }]; export declare const statisticOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "limit"; readonly alias: "l"; readonly type: NumberConstructor; readonly description: "Limit the number of files to process"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "Pass a folder or file as src to read from"; readonly multiple: true; readonly defaultOption: true; readonly defaultValue: readonly []; readonly typeLabel: "{underline files/folders}"; }, { readonly name: "output-dir"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "Folder to write the output to"; readonly defaultValue: `${string}/statistics-out/${string}`; readonly typeLabel: "{underline folder}"; }, { readonly name: "dump-json"; readonly type: BooleanConstructor; readonly description: "Write JSON output during the extraction"; readonly typeLabel: "{underline folder}"; }, { readonly name: "no-ansi"; readonly type: BooleanConstructor; readonly description: "Disable ansi-escape-sequences in the output. Useful, if you want to redirect the output to a file."; }, { readonly name: "parallel"; readonly alias: "p"; readonly type: StringConstructor; readonly description: "Number of parallel executors (defaults to {italic max(cpu.count-1, 1)})"; readonly defaultValue: number; readonly typeLabel: "{underline number}"; }, { readonly name: "features"; readonly type: StringConstructor; readonly description: `Features to track, supported are "all" or ${string}`; readonly multiple: true; readonly defaultValue: "all"; readonly typeLabel: "{underline names}"; }]; export declare const statisticHelperOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "Pass single file as src to read from"; readonly multiple: false; readonly defaultOption: true; readonly typeLabel: "{underline file}"; }, { readonly name: "output-dir"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "Folder to write the output to"; readonly typeLabel: "{underline folder}"; }, { readonly name: "root-dir"; readonly type: StringConstructor; readonly description: "Root dir for the statistics files"; readonly defaultValue: ""; }, { readonly name: "compress"; readonly type: BooleanConstructor; readonly description: "Compress the output folder to a single file"; readonly defaultValue: false; }, { readonly name: "dump-json"; readonly type: BooleanConstructor; readonly description: "Write JSON output during the extraction"; readonly typeLabel: "{underline folder}"; }, { readonly name: "no-ansi"; readonly type: BooleanConstructor; readonly description: "Disable ansi-escape-sequences in the output. Useful, if you want to redirect the output to a file."; }, { readonly name: "features"; readonly type: StringConstructor; readonly description: `Features to track, supported are "all" or ${string}`; readonly multiple: true; readonly defaultValue: "all"; readonly typeLabel: "{underline names}"; }]; export declare const summarizerOptions: [{ readonly name: "verbose"; readonly alias: "v"; readonly type: BooleanConstructor; readonly description: "Run with verbose logging"; }, { readonly name: "help"; readonly alias: "h"; readonly type: BooleanConstructor; readonly description: "Print this usage guide"; }, { readonly name: "type"; readonly alias: "t"; readonly type: StringConstructor; readonly description: "Manually specify if you want to post-process benchmark results, statistics, or compressed statistics (defaults to auto)."; readonly defaultValue: "auto"; }, { readonly name: "graph"; readonly alias: "g"; readonly type: BooleanConstructor; readonly description: "Produce data to be used for visualizing benchmarks over time"; }, { readonly name: "categorize"; readonly type: BooleanConstructor; readonly description: "Categorize the results (e.g., \"test\", \"example\", ...)"; readonly defaultValue: false; }, { readonly name: "project-skip"; readonly type: NumberConstructor; readonly description: "Skip the first n folders to find the location of projects"; readonly defaultValue: 0; }, { readonly name: "ultimate-only"; readonly alias: "u"; readonly type: BooleanConstructor; readonly description: "Only perform the second summary-stage, with this, the input is used to find the summary-output."; }, { readonly name: "input"; readonly alias: "i"; readonly type: StringConstructor; readonly description: "The {italic output} produced by the benchmark, the statistics, ..."; readonly defaultOption: true; readonly multiple: false; readonly typeLabel: "{underline file.json/output}"; }, { readonly name: "output"; readonly alias: "o"; readonly type: StringConstructor; readonly description: "Basename of the summaries (defaults to {italic <input>-summary})"; readonly typeLabel: "{underline file}"; }];