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

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

Issue 2775633002: Use ansi color in the dartanalyzer cli output. (Closed)
Patch Set: make tests more robust Created 3 years, 9 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
« no previous file with comments | « pkg/analyzer_cli/lib/src/ansi.dart ('k') | pkg/analyzer_cli/lib/src/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_cli/lib/src/error_formatter.dart
diff --git a/pkg/analyzer_cli/lib/src/error_formatter.dart b/pkg/analyzer_cli/lib/src/error_formatter.dart
index 722fbd2da540f2b0b4611dcb5d641a6fe9425ef4..bac7f7ce80ad1137acd8a1517ac13209d41eeb88 100644
--- a/pkg/analyzer_cli/lib/src/error_formatter.dart
+++ b/pkg/analyzer_cli/lib/src/error_formatter.dart
@@ -7,6 +7,7 @@ library analyzer_cli.src.error_formatter;
import 'package:analyzer/error/error.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer_cli/src/ansi.dart';
import 'package:analyzer_cli/src/options.dart';
import 'package:path/path.dart' as path;
@@ -103,6 +104,7 @@ class AnalysisStats {
}
/// Helper for formatting [AnalysisError]s.
+///
/// The two format options are a user consumable format and a machine consumable
/// format.
class ErrorFormatter {
@@ -117,8 +119,12 @@ class ErrorFormatter {
final _SeverityProcessor processSeverity;
+ AnsiLogger ansi;
+
ErrorFormatter(this.out, this.options, this.stats,
- [this.processSeverity = _identity]);
+ [this.processSeverity = _identity]) {
+ ansi = new AnsiLogger(this.options.color);
+ }
/// Compute the severity for this [error] or `null` if this error should be
/// filtered.
@@ -168,15 +174,21 @@ class ErrorFormatter {
}
}
- int indent = errorType.length + 3;
+ final int errLength = ErrorSeverity.WARNING.displayName.length;
+ final int indent = errLength + 5;
- // [warning] 'foo' is not a bar at lib/foo.dart:1:2 (foo_warning).
+ // warning • 'foo' is not a bar at lib/foo.dart:1:2 • foo_warning
String message = error.message;
// Remove any terminating '.' from the end of the message.
if (message.endsWith('.')) {
message = message.substring(0, message.length - 1);
}
- out.write('[$errorType] $message ');
+ String issueColor =
+ (severity == ErrorSeverity.ERROR || severity == ErrorSeverity.WARNING)
+ ? ansi.red
+ : '';
+ out.write(' $issueColor${errorType.padLeft(errLength)}${ansi.none} '
+ '${ansi.bullet} ${ansi.bold}$message${ansi.none} ');
String sourceName;
if (source.uriKind == UriKind.DART_URI) {
sourceName = source.uri.toString();
@@ -191,7 +203,7 @@ class ErrorFormatter {
}
out.write('at $sourceName');
out.write(':${location.lineNumber}:${location.columnNumber} ');
- out.write('(${error.errorCode.name.toLowerCase()}).');
+ out.write('${ansi.bullet} ${error.errorCode.name.toLowerCase()}');
out.writeln();
// If verbose, also print any associated correction.
« no previous file with comments | « pkg/analyzer_cli/lib/src/ansi.dart ('k') | pkg/analyzer_cli/lib/src/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698