Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: pkg/analyzer_cli/lib/src/options.dart

Issue 1720963003: Initial hermetic package analyzer. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_cli/lib/src/options.dart
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index 2bc48b97e5a2faba97f95eb8b605dd382dd0f496..732fc635ebb5d74be08b5d72d67636e55d920acb 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -74,6 +74,21 @@ class CommandLineOptions {
/// Whether to use machine format for error display
final bool machineFormat;
+ /// Whether to use the whole package analysis mode.
+ final bool packageMode;
+
+ /// The path of the root folder of the package to analyze.
+ final String packageModePath;
+
+ /// The name of the package being analyzed.
+ final String packageName;
+
+ /// Mapping of package names to package summary file paths.
+ final Map<String, String> packageSummaryInputs;
+
+ /// The path to find the package summary.
+ final String packageSummaryOutput;
+
/// The path to the package root
final String packageRootPath;
@@ -106,7 +121,7 @@ class CommandLineOptions {
CommandLineOptions._fromArgs(
ArgResults args, Map<String, String> definedVariables)
: dartSdkPath = args['dart-sdk'],
- this.definedVariables = definedVariables,
+ definedVariables = definedVariables,
analysisOptionsFile = args['options'],
disableHints = args['no-hints'],
displayVersion = args['version'],
@@ -119,6 +134,11 @@ class CommandLineOptions {
lints = args['lints'],
log = args['log'],
machineFormat = args['machine'] || args['format'] == 'machine',
+ packageMode = args['package-mode'],
+ packageModePath = args['package-mode-path'],
+ packageName = args['package-name'],
+ packageSummaryInputs = _parsePackageSummaryInputs(args),
+ packageSummaryOutput = args['package-summary-output'],
packageConfigPath = args['packages'],
packageRootPath = args['package-root'],
perfReport = args['x-perf-report'],
@@ -267,6 +287,33 @@ class CommandLineOptions {
allowMultiple: true,
splitCommas: false)
//
+ // Package analysis mode and summary.
+ //
+ ..addFlag('package-mode',
+ help: 'Enable the whole package analysis mode. '
+ 'Exactly one input path must be specified, which must be a path '
+ 'to the folder with a Pub package.',
+ defaultsTo: false,
+ negatable: false,
+ hide: true)
+ ..addOption('package-mode-path',
+ help: 'The path of the root folder of the package to analyze.',
+ hide: true)
+ ..addOption('package-name',
+ help: 'The name of the package to analyze, as it is used by clients.',
+ hide: true)
+ ..addOption('package-summary-input',
+ help: '--package-summary-input=packageName,/path/to/package.sum '
+ 'specifies the summary file that contains information about '
+ 'every library of the specified package.',
+ allowMultiple: true,
+ splitCommas: false,
+ hide: true)
+ ..addOption('package-summary-output',
+ help: 'Specifies the path to the file where the summary information '
+ 'about the package should be written to.',
+ hide: true)
+ //
// Hidden flags.
//
..addFlag('enable-async',
@@ -352,6 +399,27 @@ class CommandLineOptions {
}
}
+ /// Parse the `--package-summary-input` arguments into a Map of package
+ /// names to summary paths.
+ static Map<String, String> _parsePackageSummaryInputs(ArgResults args) {
+ Map<String, String> result = <String, String>{};
+ List<String> argList = args['package-summary-input'];
+ for (String arg in argList) {
+ int index = arg.indexOf(',');
+ if (index == -1) {
+ errorSink.writeln(
+ 'The syntax is --package-summary-input=packageName,/path/to/pkg.sum');
+ errorSink.writeln('No comma found in: $arg');
+ exitHandler(15);
+ return null; // Only reachable in testing.
+ }
+ String packageName = arg.substring(0, index);
+ String summaryPath = arg.substring(index + 1);
+ result[packageName] = summaryPath;
+ }
+ return result;
+ }
+
static _showUsage(parser) {
errorSink
.writeln('Usage: $_binaryName [options...] <libraries to analyze...>');
@@ -409,7 +477,8 @@ class CommandLineParser {
String defaultsTo,
void callback(value),
bool allowMultiple: false,
- bool splitCommas}) {
+ bool splitCommas,
+ bool hide: false}) {
_knownFlags.add(name);
_parser.addOption(name,
abbr: abbr,
@@ -419,7 +488,8 @@ class CommandLineParser {
defaultsTo: defaultsTo,
callback: callback,
allowMultiple: allowMultiple,
- splitCommas: splitCommas);
+ splitCommas: splitCommas,
+ hide: hide);
}
/// Generates a string displaying usage information for the defined options.

Powered by Google App Engine
This is Rietveld 408576698