diff --git a/.analysis_options b/.analysis_options index a10d4c5a..37b2ae01 100644 --- a/.analysis_options +++ b/.analysis_options @@ -1,2 +1,49 @@ analyzer: strong-mode: true +linter: + rules: + - always_declare_return_types + #- always_specify_types + #- annotate_overrides + #- avoid_as + - avoid_empty_else + - avoid_init_to_null + - avoid_return_types_on_setters + - await_only_futures + - camel_case_types + - cancel_subscriptions + - close_sinks + #- comment_references + - constant_identifier_names + - control_flow_in_finally + - empty_catches + - empty_constructor_bodies + - empty_statements + - hash_and_equals + #- implementation_imports + - iterable_contains_unrelated_type + - library_names + - library_prefixes + - list_remove_unrelated_type + #- non_constant_identifier_names + #- one_member_abstracts + #- only_throw_errors + - overridden_fields + - package_api_docs + - package_names + - package_prefixed_library_names + - prefer_is_not_empty + #- public_member_api_docs + - slash_for_doc_comments + #- sort_constructors_first + #- sort_unnamed_constructors_first + - super_goes_last + - test_types_in_equals + - throw_in_finally + #- type_annotate_public_apis + - type_init_formals + #- unawaited_futures + #- unnecessary_brace_in_string_interp + #- unnecessary_getters_setters + - unrelated_type_equality_checks + - valid_regexps diff --git a/bin/markdown.dart b/bin/markdown.dart index b21e097e..0df8040e 100644 --- a/bin/markdown.dart +++ b/bin/markdown.dart @@ -1,8 +1,9 @@ +import 'dart:async'; import 'dart:io'; import 'package:markdown/markdown.dart'; -main(List args) async { +Future main(List args) async { if (args.length > 1) { print('Usage: markdown.dart [file]'); exit(1); @@ -27,7 +28,7 @@ main(List args) async { print(markdownToHtml(buffer.toString())); } -usage() { +void usage() { print('''Usage: markdown [markdown file] Convert [markdown-file] from Markdown to HTML. If no file is passed on diff --git a/example/app.dart b/example/app.dart index ccb0de9e..1e005b1c 100644 --- a/example/app.dart +++ b/example/app.dart @@ -68,7 +68,7 @@ void _typeItOut(String msg, int pos) { markdownInput.onKeyUp.listen((_) { timer?.cancel(); }); - addCharacter() { + void addCharacter() { if (pos > msg.length) { return; } diff --git a/lib/src/block_parser.dart b/lib/src/block_parser.dart index ed24f509..91a368e3 100644 --- a/lib/src/block_parser.dart +++ b/lib/src/block_parser.dart @@ -588,24 +588,24 @@ abstract class ListSyntax extends BlockSyntax { var items = []; var childLines = []; - endItem() { + void endItem() { if (childLines.length > 0) { items.add(new ListItem(childLines)); childLines = []; } } - var match; - tryMatch(RegExp pattern) { + Match match; + bool tryMatch(RegExp pattern) { match = pattern.firstMatch(parser.current); return match != null; } - var listMarker = null; - var indent; + String listMarker; + String indent; // In case the first number in an ordered list is not 1, use it as the // "start". - var startNumber; + int startNumber; while (!parser.isDone) { if (tryMatch(_emptyPattern)) { diff --git a/lib/src/html_renderer.dart b/lib/src/html_renderer.dart index 95ce7c18..f88f2c4c 100644 --- a/lib/src/html_renderer.dart +++ b/lib/src/html_renderer.dart @@ -62,7 +62,7 @@ class HtmlRenderer implements NodeVisitor { bool visitElementBefore(Element element) { // Hackish. Separate block-level elements with newlines. - if (!buffer.isEmpty && _blockTags.firstMatch(element.tag) != null) { + if (buffer.isNotEmpty && _blockTags.firstMatch(element.tag) != null) { buffer.write('\n'); } diff --git a/lib/src/inline_parser.dart b/lib/src/inline_parser.dart index 7e536664..b9426011 100644 --- a/lib/src/inline_parser.dart +++ b/lib/src/inline_parser.dart @@ -289,7 +289,7 @@ class LinkSyntax extends TagSyntax { /// This handles both reference-style and inline-style links as well as /// optional titles for inline links. To make that a bit more palatable, this /// breaks it into pieces. - static get linkPattern { + static String get linkPattern { var refLink = r'\[([^\]]*)\]'; // `[id]` reflink id. var title = r'(?:\s*"([^"]+?)"\s*|)'; // Optional title in quotes. var inlineLink = '\\((\\S*?)$title\\)'; // `(url "title")` link. diff --git a/tool/common_mark_stats.dart b/tool/common_mark_stats.dart index d25f4fa6..dd096376 100644 --- a/tool/common_mark_stats.dart +++ b/tool/common_mark_stats.dart @@ -18,7 +18,7 @@ const _commonMarkTests = 'common_mark_tests.json'; String get _currentDir => p .dirname((reflect(main) as ClosureMirror).function.location.sourceUri.path); -main(List args) async { +Future main(List args) async { final parser = new ArgParser() ..addOption('section', help: 'Restrict tests to one section, provided after the option.') @@ -132,7 +132,7 @@ void printVerboseFailure( enum CompareLevel { strict, loose, fail, error } -_convert(obj) { +Object _convert(obj) { if (obj is CompareLevel) { switch (obj) { case CompareLevel.strict: diff --git a/tool/dartdoc-compare.dart b/tool/dartdoc-compare.dart index 5b9cff7c..ca8ea30b 100644 --- a/tool/dartdoc-compare.dart +++ b/tool/dartdoc-compare.dart @@ -6,16 +6,16 @@ import 'package:path/path.dart' show absolute; import 'package:yaml/yaml.dart' show loadYaml; int main(List arguments) { - const dartdoc_dir = 'dartdoc-dir'; - const markdown_before = 'before'; - const markdown_after = 'after'; + const dartdocDir = 'dartdoc-dir'; + const markdownBefore = 'before'; + const markdownAfter = 'after'; const sdk = 'sdk'; const help = 'help'; final parser = new ArgParser() ..addSeparator("Usage: dartdoc-compare.dart [OPTIONS] ") - ..addOption(dartdoc_dir, help: "Directory of the dartdoc package") - ..addOption(markdown_before, help: "Markdown package 'before' ref") - ..addOption(markdown_after, + ..addOption(dartdocDir, help: "Directory of the dartdoc package") + ..addOption(markdownBefore, help: "Markdown package 'before' ref") + ..addOption(markdownAfter, defaultsTo: "HEAD", help: "Markdown package 'after' ref") ..addFlag(sdk, defaultsTo: false, negatable: false, help: "Is the package the SDK?") @@ -25,18 +25,18 @@ int main(List arguments) { print(parser.usage); return 0; } - if (options[dartdoc_dir] == null || options[markdown_before] == null) { + if (options[dartdocDir] == null || options[markdownBefore] == null) { print( - "Invalid arguments: Options --$dartdoc_dir and --$markdown_before must be specified"); + "Invalid arguments: Options --$dartdocDir and --$markdownBefore must be specified"); print(parser.usage); return 1; } var comparer = new DartdocCompare() - ..dartdoc_dir = options[dartdoc_dir] - ..markdown_before = options[markdown_before] - ..markdown_after = options[markdown_after] - ..dartdoc_bin = absolute(options[dartdoc_dir], "bin/dartdoc.dart") - ..dartdoc_pubspec_path = absolute(options[dartdoc_dir], "pubspec.yaml") + ..dartdoc_dir = options[dartdocDir] + ..markdown_before = options[markdownBefore] + ..markdown_after = options[markdownAfter] + ..dartdoc_bin = absolute(options[dartdocDir], "bin/dartdoc.dart") + ..dartdoc_pubspec_path = absolute(options[dartdocDir], "pubspec.yaml") ..sdk = options[sdk]; var package = options.rest.first; @@ -65,7 +65,7 @@ class DartdocCompare { var nlines = "\n".allMatches(result.stdout).length; print("Diff lines: ${ nlines }"); print("diff ${diffOptions.join(" ")}"); - return result == 0; + return result.exitCode == 0; } String run_dartdoc(markdown_ref, package) { @@ -90,7 +90,7 @@ class DartdocCompare { }); } - update_dartdoc_pubspec(markdown_ref) { + int update_dartdoc_pubspec(markdown_ref) { var dartdoc_pubspec = loadYaml(new File(dartdoc_pubspec_path).readAsStringSync()); // make modifiable copy @@ -108,14 +108,14 @@ class DartdocCompare { return system('pub', ['get']); } - static system(String cmd, List args) { + static int system(String cmd, List args) { var result = Process.runSync(cmd, args); print(result.stdout); print(result.stderr); return result.exitCode; } - static doInPath(String path, Function f) { + static Object doInPath(String path, Function f) { var former = Directory.current.path; Directory.current = path; var result = f();