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

Side by Side Diff: pkg/analysis_server/lib/src/status/diagnostics.dart

Issue 2970153002: Add lint timing information to the status pages (Closed)
Patch Set: Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:analysis_server/protocol/protocol_generated.dart'; 9 import 'package:analysis_server/protocol/protocol_generated.dart';
10 import 'package:analysis_server/src/analysis_server.dart'; 10 import 'package:analysis_server/src/analysis_server.dart';
(...skipping 13 matching lines...) Expand all
24 import 'package:analyzer/source/package_map_resolver.dart'; 24 import 'package:analyzer/source/package_map_resolver.dart';
25 import 'package:analyzer/source/sdk_ext.dart'; 25 import 'package:analyzer/source/sdk_ext.dart';
26 import 'package:analyzer/src/context/source.dart'; 26 import 'package:analyzer/src/context/source.dart';
27 import 'package:analyzer/src/dart/analysis/driver.dart'; 27 import 'package:analyzer/src/dart/analysis/driver.dart';
28 import 'package:analyzer/src/dart/analysis/file_state.dart'; 28 import 'package:analyzer/src/dart/analysis/file_state.dart';
29 import 'package:analyzer/src/dart/sdk/sdk.dart'; 29 import 'package:analyzer/src/dart/sdk/sdk.dart';
30 import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult; 30 import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult;
31 import 'package:analyzer/src/generated/sdk.dart'; 31 import 'package:analyzer/src/generated/sdk.dart';
32 import 'package:analyzer/src/generated/source.dart'; 32 import 'package:analyzer/src/generated/source.dart';
33 import 'package:analyzer/src/generated/utilities_general.dart'; 33 import 'package:analyzer/src/generated/utilities_general.dart';
34 import 'package:analyzer/src/lint/linter.dart';
35 import 'package:analyzer/src/lint/registry.dart';
36 import 'package:analyzer/src/services/lint.dart';
34 import 'package:plugin/plugin.dart'; 37 import 'package:plugin/plugin.dart';
35 38
36 final String kCustomCss = ''' 39 final String kCustomCss = '''
37 .lead, .page-title+.markdown-body>p:first-child { 40 .lead, .page-title+.markdown-body>p:first-child {
38 margin-bottom: 30px; 41 margin-bottom: 30px;
39 font-size: 20px; 42 font-size: 20px;
40 font-weight: 300; 43 font-weight: 300;
41 color: #555; 44 color: #555;
42 } 45 }
43 46
(...skipping 1006 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 double percent = tag.elapsedMs / totalTime; 1053 double percent = tag.elapsedMs / totalTime;
1051 _writeRow([ 1054 _writeRow([
1052 tag.label, 1055 tag.label,
1053 printMilliseconds(tag.elapsedMs), 1056 printMilliseconds(tag.elapsedMs),
1054 printPercentage(percent) 1057 printPercentage(percent)
1055 ]); 1058 ]);
1056 } 1059 }
1057 1060
1058 tags.forEach(writeRow); 1061 tags.forEach(writeRow);
1059 buf.write('</table>'); 1062 buf.write('</table>');
1063
1064 List<LintRule> rules = Registry.ruleRegistry.rules.toList();
1065 rules.sort((first, second) {
1066 int firstTime = lintRegistry.getTimer(first).elapsedMilliseconds;
1067 int secondTime = lintRegistry.getTimer(second).elapsedMilliseconds;
1068 if (firstTime == secondTime) {
1069 return first.lintCode.name.compareTo(second.lintCode.name);
1070 }
1071 return secondTime - firstTime;
1072 });
1073 p('Lint rule timings');
1074 buf.write('<table>');
1075 _writeRow(['Lint code', 'Time (in ms)'], header: true);
1076 int totalLintTime = 0;
1077 for (var rule in rules) {
1078 int time = lintRegistry.getTimer(rule).elapsedMilliseconds;
1079 totalLintTime += time;
1080 _writeRow([rule.lintCode.name, time.toString()]);
1081 }
1082 buf.write('</table>');
1083 p('Total time spent in lints: $totalLintTime ms');
1060 } 1084 }
1061 } 1085 }
1062 1086
1063 class StatusPage extends DiagnosticPageWithNav { 1087 class StatusPage extends DiagnosticPageWithNav {
1064 StatusPage(DiagnosticsSite site) 1088 StatusPage(DiagnosticsSite site)
1065 : super(site, 'status', 'Status', 1089 : super(site, 'status', 'Status',
1066 description: 1090 description:
1067 'General status and diagnostics for the analysis server.'); 1091 'General status and diagnostics for the analysis server.');
1068 1092
1069 @override 1093 @override
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 h3('Execution domain'); 1151 h3('Execution domain');
1128 ul(ExecutionService.VALUES, (item) { 1152 ul(ExecutionService.VALUES, (item) {
1129 if (domain.onFileAnalyzed != null) { 1153 if (domain.onFileAnalyzed != null) {
1130 buf.write('$item (has subscriptions)'); 1154 buf.write('$item (has subscriptions)');
1131 } else { 1155 } else {
1132 buf.write('$item (no subscriptions)'); 1156 buf.write('$item (no subscriptions)');
1133 } 1157 }
1134 }); 1158 });
1135 } 1159 }
1136 } 1160 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698