| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library analyzer.src.command_line.arguments; | 5 library analyzer.src.command_line.arguments; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/file_system/file_system.dart'; | 9 import 'package:analyzer/file_system/file_system.dart'; |
| 10 import 'package:analyzer/src/context/builder.dart'; | 10 import 'package:analyzer/src/context/builder.dart'; |
| 11 import 'package:analyzer/src/dart/sdk/sdk.dart'; | 11 import 'package:analyzer/src/dart/sdk/sdk.dart'; |
| 12 import 'package:analyzer/src/generated/engine.dart'; | 12 import 'package:analyzer/src/generated/engine.dart'; |
| 13 import 'package:analyzer/src/generated/sdk.dart'; | 13 import 'package:analyzer/src/generated/sdk.dart'; |
| 14 import 'package:args/args.dart'; | 14 import 'package:args/args.dart'; |
| 15 import 'package:path/path.dart'; | 15 import 'package:path/path.dart'; |
| 16 | 16 |
| 17 const String analysisOptionsFileOption = 'options'; | 17 const String analysisOptionsFileOption = 'options'; |
| 18 const String defineVariableOption = 'D'; | 18 const String defineVariableOption = 'D'; |
| 19 const String enableInitializingFormalAccessFlag = 'initializing-formal-access'; | 19 const String enableInitializingFormalAccessFlag = 'initializing-formal-access'; |
| 20 const String enableStrictCallChecksFlag = 'enable-strict-call-checks'; | 20 const String enableStrictCallChecksFlag = 'enable-strict-call-checks'; |
| 21 const String enableSuperMixinFlag = 'supermixin'; | 21 const String enableSuperMixinFlag = 'supermixin'; |
| 22 const String ignoreUnrecognizedFlagsFlag = 'ignore-unrecognized-flags'; | 22 const String ignoreUnrecognizedFlagsFlag = 'ignore-unrecognized-flags'; |
| 23 const String lintsFlag = 'lints'; | 23 const String lintsFlag = 'lints'; |
| 24 const String noImplicitCastsFlag = 'no-implicit-casts'; | 24 const String noImplicitCastsFlag = 'no-implicit-casts'; |
| 25 const String noImplicitDynamicFlag = 'no-implicit-dynamic'; | 25 const String noImplicitDynamicFlag = 'no-implicit-dynamic'; |
| 26 const String packageDefaultAnalysisOptions = 'package-default-analysis-options'; |
| 26 const String packageRootOption = 'package-root'; | 27 const String packageRootOption = 'package-root'; |
| 27 const String packagesOption = 'packages'; | 28 const String packagesOption = 'packages'; |
| 28 const String sdkPathOption = 'dart-sdk'; | 29 const String sdkPathOption = 'dart-sdk'; |
| 29 const String sdkSummaryPathOption = 'dart-sdk-summary'; | 30 const String sdkSummaryPathOption = 'dart-sdk-summary'; |
| 30 const String strongModeFlag = 'strong'; | 31 const String strongModeFlag = 'strong'; |
| 31 | 32 |
| 33 const String bazelAnalysisOptionsPath = |
| 34 'package:dart.analysis_options/default.yaml'; |
| 35 const String flutterAnalysisOptionsPath = |
| 36 'package:flutter/analysis_options_user.yaml'; |
| 37 |
| 32 /** | 38 /** |
| 33 * Update [options] with the value of each analysis option command line flag. | 39 * Update [options] with the value of each analysis option command line flag. |
| 34 */ | 40 */ |
| 35 void applyAnalysisOptionFlags(AnalysisOptionsImpl options, ArgResults args, | 41 void applyAnalysisOptionFlags(AnalysisOptionsImpl options, ArgResults args, |
| 36 {void verbosePrint(String text)}) { | 42 {void verbosePrint(String text)}) { |
| 37 void verbose(String text) { | 43 void verbose(String text) { |
| 38 if (verbosePrint != null) { | 44 if (verbosePrint != null) { |
| 39 verbosePrint('Analysis options: $text'); | 45 verbosePrint('Analysis options: $text'); |
| 40 } | 46 } |
| 41 } | 47 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 builderOptions.argResults = args; | 86 builderOptions.argResults = args; |
| 81 // | 87 // |
| 82 // File locations. | 88 // File locations. |
| 83 // | 89 // |
| 84 builderOptions.dartSdkSummaryPath = args[sdkSummaryPathOption]; | 90 builderOptions.dartSdkSummaryPath = args[sdkSummaryPathOption]; |
| 85 builderOptions.defaultAnalysisOptionsFilePath = | 91 builderOptions.defaultAnalysisOptionsFilePath = |
| 86 args[analysisOptionsFileOption]; | 92 args[analysisOptionsFileOption]; |
| 87 builderOptions.defaultPackageFilePath = args[packagesOption]; | 93 builderOptions.defaultPackageFilePath = args[packagesOption]; |
| 88 builderOptions.defaultPackagesDirectoryPath = args[packageRootOption]; | 94 builderOptions.defaultPackagesDirectoryPath = args[packageRootOption]; |
| 89 // | 95 // |
| 96 // Flags. |
| 97 // |
| 98 builderOptions.packageDefaultAnalysisOptions = |
| 99 args[packageDefaultAnalysisOptions]; |
| 100 // |
| 90 // Analysis options. | 101 // Analysis options. |
| 91 // | 102 // |
| 92 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); | 103 AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl(); |
| 93 applyAnalysisOptionFlags(defaultOptions, args); | 104 applyAnalysisOptionFlags(defaultOptions, args); |
| 94 if (strongMode != null) { | 105 if (strongMode != null) { |
| 95 defaultOptions.strongMode = strongMode; | 106 defaultOptions.strongMode = strongMode; |
| 96 } | 107 } |
| 97 if (trackCacheDependencies != null) { | 108 if (trackCacheDependencies != null) { |
| 98 defaultOptions.trackCacheDependencies = trackCacheDependencies; | 109 defaultOptions.trackCacheDependencies = trackCacheDependencies; |
| 99 } | 110 } |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 | 183 |
| 173 // | 184 // |
| 174 // Hidden flags and options. | 185 // Hidden flags and options. |
| 175 // | 186 // |
| 176 parser.addOption(defineVariableOption, | 187 parser.addOption(defineVariableOption, |
| 177 abbr: 'D', | 188 abbr: 'D', |
| 178 allowMultiple: true, | 189 allowMultiple: true, |
| 179 help: 'Define environment variables. For example, "-Dfoo=bar" defines an ' | 190 help: 'Define environment variables. For example, "-Dfoo=bar" defines an ' |
| 180 'environment variable named "foo" whose value is "bar".', | 191 'environment variable named "foo" whose value is "bar".', |
| 181 hide: hide); | 192 hide: hide); |
| 193 parser.addFlag(packageDefaultAnalysisOptions, |
| 194 help: 'If an analysis options file is not explicitly specified ' |
| 195 'via the "--$analysisOptionsFileOption" option\n' |
| 196 'and an analysis options file cannot be found ' |
| 197 'in the project directory or any parent directory,\n' |
| 198 'then look for analysis options in the following locations:\n' |
| 199 '- $flutterAnalysisOptionsPath\n' |
| 200 '- $bazelAnalysisOptionsPath', |
| 201 defaultsTo: true, |
| 202 negatable: true, |
| 203 hide: hide); |
| 182 parser.addOption(packagesOption, | 204 parser.addOption(packagesOption, |
| 183 help: 'The path to the package resolution configuration file, which ' | 205 help: 'The path to the package resolution configuration file, which ' |
| 184 'supplies a mapping of package names\nto paths. This option cannot be
' | 206 'supplies a mapping of package names\nto paths. This option cannot be
' |
| 185 'used with --package-root.', | 207 'used with --package-root.', |
| 186 hide: ddc); | 208 hide: ddc); |
| 187 parser.addOption(sdkSummaryPathOption, | 209 parser.addOption(sdkSummaryPathOption, |
| 188 help: 'The path to the Dart SDK summary file.', hide: hide); | 210 help: 'The path to the Dart SDK summary file.', hide: hide); |
| 189 parser.addFlag(enableStrictCallChecksFlag, | 211 parser.addFlag(enableStrictCallChecksFlag, |
| 190 help: 'Fix issue 21938.', | 212 help: 'Fix issue 21938.', |
| 191 defaultsTo: false, | 213 defaultsTo: false, |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 .replaceAll('\r\n', '\n') | 349 .replaceAll('\r\n', '\n') |
| 328 .replaceAll('\r', '\n') | 350 .replaceAll('\r', '\n') |
| 329 .split('\n') | 351 .split('\n') |
| 330 .where((String line) => line.isNotEmpty)); | 352 .where((String line) => line.isNotEmpty)); |
| 331 } on FileSystemException catch (e) { | 353 } on FileSystemException catch (e) { |
| 332 throw new Exception('Failed to read file specified by $lastArg : $e'); | 354 throw new Exception('Failed to read file specified by $lastArg : $e'); |
| 333 } | 355 } |
| 334 } | 356 } |
| 335 return args; | 357 return args; |
| 336 } | 358 } |
| OLD | NEW |