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. |