OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library linter.src.formatter; | 5 library linter.src.formatter; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 import 'dart:math'; | 8 import 'dart:math'; |
9 | 9 |
10 import 'package:analyzer/analyzer.dart'; | 10 import 'package:analyzer/analyzer.dart'; |
11 import 'package:analyzer/src/generated/engine.dart'; | 11 import 'package:analyzer/src/generated/engine.dart'; |
12 import 'package:analyzer/src/generated/source.dart'; | 12 import 'package:analyzer/src/generated/source.dart'; |
13 import 'package:analyzer/src/services/lint.dart'; | 13 import 'package:analyzer/src/services/lint.dart'; |
14 import 'package:linter/src/linter.dart'; | 14 import 'package:linter/src/linter.dart'; |
15 | 15 |
16 String getLineContents(int lineNumber, AnalysisError error) { | 16 String getLineContents(int lineNumber, AnalysisError error) { |
17 var path = error.source.fullName; | 17 String path = error.source.fullName; |
18 var file = new File(path); | 18 File file = new File(path); |
19 if (file.existsSync()) { | 19 String failureDetails; |
| 20 if (!file.existsSync()) { |
| 21 failureDetails = 'file at $path does not exist'; |
| 22 } else { |
20 var lines = file.readAsLinesSync(); | 23 var lines = file.readAsLinesSync(); |
21 var lineIndex = lineNumber - 1; | 24 var lineIndex = lineNumber - 1; |
22 if (lines.length > lineIndex) { | 25 if (lines.length > lineIndex) { |
23 return lines[lineIndex]; | 26 return lines[lineIndex]; |
24 } | 27 } |
| 28 failureDetails = |
| 29 'line index ($lineIndex), outside of file line range (${lines.length})'; |
25 } | 30 } |
26 return null; | 31 throw new StateError('Unable to get contents for line: $failureDetails'); |
27 } | 32 } |
28 | 33 |
29 String pluralize(String word, int count) => | 34 String pluralize(String word, int count) => |
30 "$count ${count == 1 ? '$word' : '${word}s'}"; | 35 "$count ${count == 1 ? '$word' : '${word}s'}"; |
31 | 36 |
32 String shorten(String fileRoot, String fullName) { | 37 String shorten(String fileRoot, String fullName) { |
33 if (fileRoot == null || !fullName.startsWith(fileRoot)) { | 38 if (fileRoot == null || !fullName.startsWith(fileRoot)) { |
34 return fullName; | 39 return fullName; |
35 } | 40 } |
36 return fullName.substring(fileRoot.length); | 41 return fullName.substring(fileRoot.length); |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 | 274 |
270 void _writeLint(AnalysisError error, LineInfo lineInfo) { | 275 void _writeLint(AnalysisError error, LineInfo lineInfo) { |
271 var offset = error.offset; | 276 var offset = error.offset; |
272 var location = lineInfo.getLocation(offset); | 277 var location = lineInfo.getLocation(offset); |
273 var line = location.lineNumber; | 278 var line = location.lineNumber; |
274 var column = location.columnNumber; | 279 var column = location.columnNumber; |
275 | 280 |
276 writeLint(error, offset: offset, column: column, line: line); | 281 writeLint(error, offset: offset, column: column, line: line); |
277 } | 282 } |
278 } | 283 } |
OLD | NEW |