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

Unified Diff: packages/dart_style/lib/src/formatter_options.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years 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 | « packages/dart_style/lib/src/debug.dart ('k') | packages/dart_style/lib/src/io.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/dart_style/lib/src/formatter_options.dart
diff --git a/packages/dart_style/lib/src/formatter_options.dart b/packages/dart_style/lib/src/formatter_options.dart
index 3869e8a43637943b4cd652920788e5141641b70f..69a46ffac44d8a951aaa142f68c4c37d3cef5060 100644
--- a/packages/dart_style/lib/src/formatter_options.dart
+++ b/packages/dart_style/lib/src/formatter_options.dart
@@ -14,6 +14,9 @@ class FormatterOptions {
/// The [OutputReporter] used to show the formatting results.
final OutputReporter reporter;
+ /// The number of spaces of indentation to prefix the output with.
+ final int indent;
+
/// The number of columns that formatted output should be constrained to fit
/// within.
final int pageWidth;
@@ -22,7 +25,7 @@ class FormatterOptions {
final bool followLinks;
FormatterOptions(this.reporter,
- {this.pageWidth: 80, this.followLinks: false});
+ {this.indent: 0, this.pageWidth: 80, this.followLinks: false});
}
/// How the formatter reports the results it produces.
@@ -47,20 +50,23 @@ abstract class OutputReporter {
/// Describe the symlink at [path] that wasn't followed.
void showSkippedLink(String path) {}
- /// Describe the hidden file at [path] that wasn't processed.
- void showHiddenFile(String path) {}
+ /// Describe the hidden [path] that wasn't processed.
+ void showHiddenPath(String path) {}
+
+ /// Called when [file] is about to be formatted.
+ void beforeFile(File file, String label) {}
/// Describe the processed file at [path] whose formatted result is [output].
///
/// If the contents of the file are the same as the formatted output,
/// [changed] will be false.
- void showFile(File file, String label, SourceCode output, {bool changed});
+ void afterFile(File file, String label, SourceCode output, {bool changed});
}
/// Prints only the names of files whose contents are different from their
/// formatted version.
class _DryRunReporter extends OutputReporter {
- void showFile(File file, String label, SourceCode output, {bool changed}) {
+ void afterFile(File file, String label, SourceCode output, {bool changed}) {
// Only show the changed files.
if (changed) print(label);
}
@@ -76,11 +82,11 @@ class _PrintReporter extends OutputReporter {
print("Skipping link $path");
}
- void showHiddenFile(String path) {
- print("Skipping hidden file $path");
+ void showHiddenPath(String path) {
+ print("Skipping hidden path $path");
}
- void showFile(File file, String label, SourceCode output, {bool changed}) {
+ void afterFile(File file, String label, SourceCode output, {bool changed}) {
// Don't add an extra newline.
stdout.write(output.text);
}
@@ -89,7 +95,7 @@ class _PrintReporter extends OutputReporter {
/// Prints the formatted result and selection info of each file to stdout as a
/// JSON map.
class _PrintJsonReporter extends OutputReporter {
- void showFile(File file, String label, SourceCode output, {bool changed}) {
+ void afterFile(File file, String label, SourceCode output, {bool changed}) {
// TODO(rnystrom): Put an empty selection in here to remain compatible with
// the old formatter. Since there's no way to pass a selection on the
// command line, this will never be used, which is why it's hard-coded to
@@ -108,7 +114,7 @@ class _PrintJsonReporter extends OutputReporter {
/// Overwrites each file with its formatted result.
class _OverwriteReporter extends _PrintReporter {
- void showFile(File file, String label, SourceCode output, {bool changed}) {
+ void afterFile(File file, String label, SourceCode output, {bool changed}) {
if (changed) {
file.writeAsStringSync(output.text);
print("Formatted $label");
@@ -117,3 +123,77 @@ class _OverwriteReporter extends _PrintReporter {
}
}
}
+
+/// A decorating reporter that reports how long it took for format each file.
+class ProfileReporter implements OutputReporter {
+ final OutputReporter _inner;
+
+ /// The files that have been started but have not completed yet.
+ ///
+ /// Maps a file label to the time that it started being formatted.
+ final Map<String, DateTime> _ongoing = {};
+
+ /// The elapsed time it took to format each completed file.
+ final Map<String, Duration> _elapsed = {};
+
+ /// The number of files that completed so fast that they aren't worth
+ /// tracking.
+ int _elided = 0;
+
+ ProfileReporter(this._inner);
+
+ /// Show the times for the slowest files to format.
+ void showProfile() {
+ // Everything should be done.
+ assert(_ongoing.isEmpty);
+
+ var files = _elapsed.keys.toList();
+ files.sort((a, b) => _elapsed[b].compareTo(_elapsed[a]));
+
+ for (var file in files) {
+ print("${_elapsed[file]}: $file");
+ }
+
+ if (_elided >= 1) {
+ var s = _elided > 1 ? 's' : '';
+ print("...$_elided more file$s each took less than 10ms.");
+ }
+ }
+
+ /// Describe the directory whose contents are about to be processed.
+ void showDirectory(String path) {
+ _inner.showDirectory(path);
+ }
+
+ /// Describe the symlink at [path] that wasn't followed.
+ void showSkippedLink(String path) {
+ _inner.showSkippedLink(path);
+ }
+
+ /// Describe the hidden [path] that wasn't processed.
+ void showHiddenPath(String path) {
+ _inner.showHiddenPath(path);
+ }
+
+ /// Called when [file] is about to be formatted.
+ void beforeFile(File file, String label) {
+ _inner.beforeFile(file, label);
+
+ _ongoing[label] = new DateTime.now();
+ }
+
+ /// Describe the processed file at [path] whose formatted result is [output].
+ ///
+ /// If the contents of the file are the same as the formatted output,
+ /// [changed] will be false.
+ void afterFile(File file, String label, SourceCode output, {bool changed}) {
+ var elapsed = new DateTime.now().difference(_ongoing.remove(label));
+ if (elapsed.inMilliseconds >= 10) {
+ _elapsed[label] = elapsed;
+ } else {
+ _elided++;
+ }
+
+ _inner.afterFile(file, label, output, changed: changed);
+ }
+}
« no previous file with comments | « packages/dart_style/lib/src/debug.dart ('k') | packages/dart_style/lib/src/io.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698