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.test.rule; | 5 library linter.test.rule; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:analyzer/src/generated/engine.dart'; | 9 import 'package:analyzer/src/generated/engine.dart'; |
10 import 'package:analyzer/src/generated/error.dart'; | 10 import 'package:analyzer/src/generated/error.dart'; |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 if (entry is! File || !isDartFile(entry)) continue; | 302 if (entry is! File || !isDartFile(entry)) continue; |
303 var ruleName = p.basenameWithoutExtension(entry.path); | 303 var ruleName = p.basenameWithoutExtension(entry.path); |
304 if (ruleName == ruleToTest) { | 304 if (ruleName == ruleToTest) { |
305 testRule(ruleName, entry); | 305 testRule(ruleName, entry); |
306 } | 306 } |
307 } | 307 } |
308 } | 308 } |
309 | 309 |
310 Annotation extractAnnotation(String line) { | 310 Annotation extractAnnotation(String line) { |
311 int index = line.indexOf(new RegExp(r'(//|#)[ ]?LINT')); | 311 int index = line.indexOf(new RegExp(r'(//|#)[ ]?LINT')); |
312 //Grab the first comment to see if there's one preceding the annotation. | 312 |
313 int comment = line.indexOf(new RegExp(r'(//|#)')); | 313 // Grab the first comment to see if there's one preceding the annotation. |
| 314 // Check for '#' first to allow for lints on dartdocs. |
| 315 int comment = line.indexOf('#'); |
| 316 if (comment == -1) { |
| 317 comment = line.indexOf('//'); |
| 318 } |
| 319 |
314 if (index > -1 && comment == index) { | 320 if (index > -1 && comment == index) { |
315 int column; | 321 int column; |
316 int length; | 322 int length; |
317 var annotation = line.substring(index); | 323 var annotation = line.substring(index); |
318 var leftBrace = annotation.indexOf('['); | 324 var leftBrace = annotation.indexOf('['); |
319 if (leftBrace != -1) { | 325 if (leftBrace != -1) { |
320 var sep = annotation.indexOf(':'); | 326 var sep = annotation.indexOf(':'); |
321 column = int.parse(annotation.substring(leftBrace + 1, sep)); | 327 column = int.parse(annotation.substring(leftBrace + 1, sep)); |
322 var rightBrace = annotation.indexOf(']'); | 328 var rightBrace = annotation.indexOf(']'); |
323 length = int.parse(annotation.substring(sep + 1, rightBrace)); | 329 length = int.parse(annotation.substring(sep + 1, rightBrace)); |
324 } | 330 } |
325 | 331 |
326 int msgIndex = annotation.indexOf(']') + 1; | 332 int msgIndex = annotation.indexOf(']') + 1; |
327 if (msgIndex < 1) { | 333 if (msgIndex < 1) { |
328 msgIndex = annotation.indexOf('T') + 1; | 334 msgIndex = annotation.indexOf('T') + 1; |
329 } | 335 } |
330 String msg = null; | 336 String msg = null; |
331 if (msgIndex < line.length) { | 337 if (msgIndex < line.length) { |
332 msg = line.substring(index + msgIndex).trim(); | 338 msg = line.substring(index + msgIndex).trim(); |
333 if (msg.length == 0) { | 339 if (msg.isEmpty) { |
334 msg = null; | 340 msg = null; |
335 } | 341 } |
336 } | 342 } |
337 return new Annotation.forLint(msg, column, length); | 343 return new Annotation.forLint(msg, column, length); |
338 } | 344 } |
339 return null; | 345 return null; |
340 } | 346 } |
341 | 347 |
342 AnnotationMatcher matchesAnnotation( | 348 AnnotationMatcher matchesAnnotation( |
343 String message, ErrorType type, int lineNumber) => | 349 String message, ErrorType type, int lineNumber) => |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 | 480 |
475 class NoFilter implements LintFilter { | 481 class NoFilter implements LintFilter { |
476 @override | 482 @override |
477 bool filter(AnalysisError lint) => false; | 483 bool filter(AnalysisError lint) => false; |
478 } | 484 } |
479 | 485 |
480 class ResultReporter extends DetailedReporter { | 486 class ResultReporter extends DetailedReporter { |
481 ResultReporter(Iterable<AnalysisErrorInfo> errors) | 487 ResultReporter(Iterable<AnalysisErrorInfo> errors) |
482 : super(errors, new NoFilter(), stdout); | 488 : super(errors, new NoFilter(), stdout); |
483 } | 489 } |
OLD | NEW |