| Index: pkg/analyzer/bin/analyzer.dart
|
| ===================================================================
|
| --- pkg/analyzer/bin/analyzer.dart (revision 45350)
|
| +++ pkg/analyzer/bin/analyzer.dart (working copy)
|
| @@ -1,151 +0,0 @@
|
| -#!/usr/bin/env dart
|
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -/** The entry point for the analyzer. */
|
| -library analyzer;
|
| -
|
| -import 'dart:async';
|
| -import 'dart:convert';
|
| -import 'dart:io';
|
| -
|
| -import 'package:analyzer/options.dart';
|
| -import 'package:analyzer/src/analyzer_impl.dart';
|
| -import 'package:analyzer/src/generated/engine.dart';
|
| -import 'package:analyzer/src/generated/error.dart';
|
| -import 'package:analyzer/src/generated/interner.dart';
|
| -import 'package:analyzer/src/generated/java_core.dart' show JavaSystem;
|
| -import 'package:analyzer/src/generated/java_engine.dart';
|
| -import 'package:analyzer/src/generated/utilities_general.dart';
|
| -
|
| -void main(List<String> args) {
|
| - StringUtilities.INTERNER = new MappedInterner();
|
| - CommandLineOptions options = CommandLineOptions.parse(args);
|
| - if (options.shouldBatch) {
|
| - BatchRunner.runAsBatch(args, (List<String> args) {
|
| - CommandLineOptions options = CommandLineOptions.parse(args);
|
| - return _analyzeAll(options, true);
|
| - });
|
| - } else {
|
| - _analyzeAll(options, false);
|
| - }
|
| -}
|
| -
|
| -_analyzeAll(CommandLineOptions options, bool isBatch) {
|
| - if (!options.machineFormat) {
|
| - stdout.writeln("Analyzing ${options.sourceFiles}...");
|
| - }
|
| - ErrorSeverity allResult = ErrorSeverity.NONE;
|
| - for (String sourcePath in options.sourceFiles) {
|
| - sourcePath = sourcePath.trim();
|
| - // check that file exists
|
| - if (!new File(sourcePath).existsSync()) {
|
| - print('File not found: $sourcePath');
|
| - exitCode = ErrorSeverity.ERROR.ordinal;
|
| - // fail fast; don't analyze more files
|
| - return ErrorSeverity.ERROR;
|
| - }
|
| - // check that file is Dart file
|
| - if (!AnalysisEngine.isDartFileName(sourcePath)) {
|
| - print('$sourcePath is not a Dart file');
|
| - exitCode = ErrorSeverity.ERROR.ordinal;
|
| - // fail fast; don't analyze more files
|
| - return ErrorSeverity.ERROR;
|
| - }
|
| - ErrorSeverity status = _runAnalyzer(options, sourcePath, isBatch);
|
| - allResult = allResult.max(status);
|
| - }
|
| - return allResult;
|
| -}
|
| -
|
| -_runAnalyzer(CommandLineOptions options, String sourcePath, bool isBatch) {
|
| - if (options.warmPerf) {
|
| - int startTime = JavaSystem.currentTimeMillis();
|
| - AnalyzerImpl analyzer =
|
| - new AnalyzerImpl(sourcePath, options, startTime, isBatch);
|
| - analyzer.analyzeSync(printMode: 2);
|
| -
|
| - for (int i = 0; i < 8; i++) {
|
| - startTime = JavaSystem.currentTimeMillis();
|
| - analyzer = new AnalyzerImpl(sourcePath, options, startTime, isBatch);
|
| - analyzer.analyzeSync(printMode: 0);
|
| - }
|
| -
|
| - PerformanceTag.reset();
|
| - startTime = JavaSystem.currentTimeMillis();
|
| - analyzer = new AnalyzerImpl(sourcePath, options, startTime, isBatch);
|
| - return analyzer.analyzeSync();
|
| - }
|
| - int startTime = JavaSystem.currentTimeMillis();
|
| - AnalyzerImpl analyzer =
|
| - new AnalyzerImpl(sourcePath, options, startTime, isBatch);
|
| - var errorSeverity = analyzer.analyzeSync();
|
| - if (errorSeverity == ErrorSeverity.ERROR) {
|
| - exitCode = errorSeverity.ordinal;
|
| - }
|
| - if (options.warningsAreFatal && errorSeverity == ErrorSeverity.WARNING) {
|
| - exitCode = errorSeverity.ordinal;
|
| - }
|
| - return errorSeverity;
|
| -}
|
| -
|
| -typedef ErrorSeverity BatchRunnerHandler(List<String> args);
|
| -
|
| -/// Provides a framework to read command line options from stdin and feed them to a callback.
|
| -class BatchRunner {
|
| - /**
|
| - * Run the tool in 'batch' mode, receiving command lines through stdin and returning pass/fail
|
| - * status through stdout. This feature is intended for use in unit testing.
|
| - */
|
| - static void runAsBatch(List<String> sharedArgs, BatchRunnerHandler handler) {
|
| - stdout.writeln('>>> BATCH START');
|
| - Stopwatch stopwatch = new Stopwatch();
|
| - stopwatch.start();
|
| - int testsFailed = 0;
|
| - int totalTests = 0;
|
| - ErrorSeverity batchResult = ErrorSeverity.NONE;
|
| - // read line from stdin
|
| - Stream cmdLine =
|
| - stdin.transform(UTF8.decoder).transform(new LineSplitter());
|
| - cmdLine.listen((String line) {
|
| - // may be finish
|
| - if (line.isEmpty) {
|
| - var time = stopwatch.elapsedMilliseconds;
|
| - stdout.writeln(
|
| - '>>> BATCH END (${totalTests - testsFailed}/$totalTests) ${time}ms');
|
| - exitCode = batchResult.ordinal;
|
| - }
|
| - // prepare aruments
|
| - var args;
|
| - {
|
| - var lineArgs = line.split(new RegExp('\\s+'));
|
| - args = new List<String>();
|
| - args.addAll(sharedArgs);
|
| - args.addAll(lineArgs);
|
| - args.remove('-b');
|
| - args.remove('--batch');
|
| - }
|
| - // analyze single set of arguments
|
| - try {
|
| - totalTests++;
|
| - ErrorSeverity result = handler(args);
|
| - bool resultPass = result != ErrorSeverity.ERROR;
|
| - if (!resultPass) {
|
| - testsFailed++;
|
| - }
|
| - batchResult = batchResult.max(result);
|
| - // Write stderr end token and flush.
|
| - stderr.writeln('>>> EOF STDERR');
|
| - String resultPassString = resultPass ? 'PASS' : 'FAIL';
|
| - stdout.writeln(
|
| - '>>> TEST $resultPassString ${stopwatch.elapsedMilliseconds}ms');
|
| - } catch (e, stackTrace) {
|
| - stderr.writeln(e);
|
| - stderr.writeln(stackTrace);
|
| - stderr.writeln('>>> EOF STDERR');
|
| - stdout.writeln('>>> TEST CRASH');
|
| - }
|
| - });
|
| - }
|
| -}
|
|
|