diff --git a/analysis_options.yaml b/analysis_options.yaml index e472853250..b4a5769577 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,3 +1,5 @@ +include: package:pedantic/analysis_options.yaml + analyzer: exclude: - 'doc/**' diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart index 13b9d88f70..50fec9820a 100644 --- a/lib/src/dartdoc_options.dart +++ b/lib/src/dartdoc_options.dart @@ -657,7 +657,7 @@ abstract class DartdocOption { } /// Apply the function [visit] to [this] and all children. - void traverse(void visit(DartdocOption)) { + void traverse(void visit(DartdocOption option)) { visit(this); _children.values.forEach((d) => d.traverse(visit)); } @@ -832,7 +832,7 @@ class DartdocOptionSet extends DartdocOption { /// Traverse skips this node, because it doesn't represent a real configuration object. @override - void traverse(void visitor(DartdocOption)) { + void traverse(void visitor(DartdocOption option)) { _children.values.forEach((d) => d.traverse(visitor)); } } @@ -884,12 +884,12 @@ class DartdocOptionArgFile extends DartdocOption DartdocOptionArgFile(String name, T defaultsTo, {String abbr, bool mustExist = false, - String help: '', + String help = '', bool hide = false, bool isDir = false, bool isFile = false, bool negatable = false, - bool parentDirOverridesChild: false, + bool parentDirOverridesChild = false, bool splitCommas}) : super(name, defaultsTo, help, isDir, isFile, mustExist, null) { _abbr = abbr; @@ -936,10 +936,10 @@ class DartdocOptionFileOnly extends DartdocOption bool _parentDirOverridesChild; DartdocOptionFileOnly(String name, T defaultsTo, {bool mustExist = false, - String help: '', + String help = '', bool isDir = false, bool isFile = false, - bool parentDirOverridesChild: false, + bool parentDirOverridesChild = false, T Function(YamlMap, pathLib.Context) convertYamlToType}) : super(name, defaultsTo, help, isDir, isFile, mustExist, convertYamlToType) { diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart index aa6c599ab6..bba26f8fc6 100644 --- a/lib/src/element_type.dart +++ b/lib/src/element_type.dart @@ -318,7 +318,7 @@ class GenericTypeAliasElementType extends TypeParameterElementType with GenericTypeAliasElementTypeMixin { GenericTypeAliasElementType(TypeParameterType t, PackageGraph packageGraph, ModelElement element, ElementType returnedFrom) - : super(t, packageGraph, element, returnedFrom) {} + : super(t, packageGraph, element, returnedFrom); } /// A Callable generic type alias that may or may not have a name. diff --git a/lib/src/html/html_generator.dart b/lib/src/html/html_generator.dart index aac3023f94..b09db48488 100644 --- a/lib/src/html/html_generator.dart +++ b/lib/src/html/html_generator.dart @@ -128,7 +128,7 @@ class HtmlGeneratorOptions implements HtmlOptions { this.relCanonicalPrefix, this.faviconPath, String toolVersion, - this.prettyIndexJson: false}) + this.prettyIndexJson = false}) : this.toolVersion = toolVersion ?? 'unknown'; } diff --git a/lib/src/io_utils.dart b/lib/src/io_utils.dart index 9a796028ae..358d9481ed 100644 --- a/lib/src/io_utils.dart +++ b/lib/src/io_utils.dart @@ -36,7 +36,7 @@ String resolveTildePath(String originalPath) { /// /// The returned paths are guaranteed to begin with [dir]. Iterable listDir(String dir, - {bool recursive: false, + {bool recursive = false, Iterable listDir(Directory dir)}) { if (listDir == null) listDir = (Directory dir) => dir.listSync(); diff --git a/lib/src/markdown_processor.dart b/lib/src/markdown_processor.dart index ca97a0c1d8..c71592cc96 100644 --- a/lib/src/markdown_processor.dart +++ b/lib/src/markdown_processor.dart @@ -153,7 +153,7 @@ final RegExp _hide_schemes = new RegExp('^(http|https)://'); class MatchingLinkResult { final ModelElement element; final bool warn; - MatchingLinkResult(this.element, {this.warn: true}); + MatchingLinkResult(this.element, {this.warn = true}); } class IterableBlockParser extends md.BlockParser { @@ -933,7 +933,7 @@ class MarkdownDocument extends md.Document { class Documentation { final Canonicalization _element; - Documentation.forElement(this._element) {} + Documentation.forElement(this._element); bool _hasExtendedDocs; bool get hasExtendedDocs { diff --git a/lib/src/model.dart b/lib/src/model.dart index baa36d93c6..454d84d2ae 100644 --- a/lib/src/model.dart +++ b/lib/src/model.dart @@ -38,7 +38,7 @@ import 'package:analyzer/src/dart/sdk/sdk.dart'; import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult; import 'package:analyzer/src/generated/java_io.dart'; import 'package:analyzer/src/generated/resolver.dart' - show Namespace, NamespaceBuilder, InheritanceManager; + show Namespace, NamespaceBuilder, InheritanceManager; // ignore: deprecated_member_use import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/source_io.dart'; @@ -1043,9 +1043,9 @@ class Class extends ModelElement List get _inheritedElements { if (__inheritedElements == null) { Map cmap = definingLibrary.inheritanceManager - .getMembersInheritedFromClasses(element); + .getMembersInheritedFromClasses(element); // ignore: deprecated_member_use Map imap = definingLibrary.inheritanceManager - .getMembersInheritedFromInterfaces(element); + .getMembersInheritedFromInterfaces(element); // ignore: deprecated_member_use __inheritedElements = new List.from(cmap.values) ..addAll(imap.values.where((e) => !cmap.containsKey(e.name))); } @@ -1515,7 +1515,7 @@ abstract class Canonicalization implements Locatable, Documentable { // Penalty for deprecated libraries. if (lib.isDeprecated) scoredCandidate.alterScore(-1.0, 'is deprecated'); // Give a big boost if the library has the package name embedded in it. - if (lib.package.namePieces.intersection(lib.namePieces).length > 0) { + if (lib.package.namePieces.intersection(lib.namePieces).isEmpty) { scoredCandidate.alterScore(1.0, 'embeds package name'); } // Give a tiny boost for libraries with long names, assuming they're @@ -1523,7 +1523,7 @@ abstract class Canonicalization implements Locatable, Documentable { scoredCandidate.alterScore(.01 * lib.namePieces.length, 'name is long'); // If we don't know the location of this element, return our best guess. // TODO(jcollins-g): is that even possible? - assert(!locationPieces.isEmpty); + assert(locationPieces.isNotEmpty); if (locationPieces.isEmpty) return scoredCandidate; // The more pieces we have of the location in our library name, the more we should boost our score. scoredCandidate.alterScore( @@ -1928,7 +1928,7 @@ abstract class GetterSetterCombo implements ModelElement { } else if (hasPublicSetter) { _documentationFrom.addAll(setter.documentationFrom); } - if (_documentationFrom.length == 0 || + if (_documentationFrom.isEmpty|| _documentationFrom.every((e) => e.documentationComment == '')) _documentationFrom = computeDocumentationFrom; } @@ -2376,9 +2376,12 @@ class Library extends ModelElement with Categorization, TopLevelContainer { return '${package.baseHref}${library.dirName}/$fileName'; } + // ignore: deprecated_member_use InheritanceManager _inheritanceManager; + // ignore: deprecated_member_use InheritanceManager get inheritanceManager { if (_inheritanceManager == null) { + // ignore: deprecated_member_use _inheritanceManager = new InheritanceManager(element); } return _inheritanceManager; @@ -3363,7 +3366,7 @@ abstract class ModelElement extends Canonicalization // Avoid claiming canonicalization for elements outside of this element's // defining package. // TODO(jcollins-g): Make the else block unconditional. - if (!candidateLibraries.isEmpty && + if (candidateLibraries.isNotEmpty && !candidateLibraries .any((l) => l.package == definingLibrary.package)) { warn(PackageWarning.reexportedPrivateApiAcrossPackages, @@ -3814,7 +3817,7 @@ abstract class ModelElement extends Canonicalization } String linkedParams( - {bool showMetadata: true, bool showNames: true, String separator: ', '}) { + {bool showMetadata = true, bool showNames = true, String separator = ', '}) { List requiredParams = parameters.where((Parameter p) => !p.isOptional).toList(); List positionalParams = @@ -3886,7 +3889,7 @@ abstract class ModelElement extends Canonicalization String _calculateLinkedName() { // If we're calling this with an empty name, we probably have the wrong // element associated with a ModelElement or there's an analysis bug. - assert(!name.isEmpty || + assert(name.isNotEmpty || (this.element is TypeDefiningElement && (this.element as TypeDefiningElement).type.name == "dynamic") || this is ModelFunction); @@ -3935,7 +3938,7 @@ abstract class ModelElement extends Canonicalization var fragmentFile = new File(pathLib.join(dirPath, args['file'])); if (fragmentFile.existsSync()) { replacement = fragmentFile.readAsStringSync(); - if (!lang.isEmpty) { + if (lang.isNotEmpty) { replacement = replacement.replaceFirst('```', '```$lang'); } } else { @@ -4517,7 +4520,7 @@ abstract class ModelElement extends Canonicalization final fragExtension = '.md'; var file = src + fragExtension; var region = args['region'] ?? ''; - if (!region.isEmpty) { + if (region.isNotEmpty) { var dir = pathLib.dirname(src); var basename = pathLib.basenameWithoutExtension(src); var ext = pathLib.extension(src); @@ -5241,7 +5244,7 @@ class PackageGraph { } } - if (!c._mixins.isEmpty) { + if (c._mixins.isNotEmpty) { c._mixins.forEach((t) { _checkAndAddClass(t.element, c); }); @@ -5249,7 +5252,7 @@ class PackageGraph { if (c.supertype != null) { _checkAndAddClass(c.supertype.element, c); } - if (!c.interfaces.isEmpty) { + if (c.interfaces.isNotEmpty) { c.interfaces.forEach((t) { _checkAndAddClass(t.element, c); }); @@ -6551,7 +6554,7 @@ class PackageBuilder { final UriResolver packageResolver = new PackageMapUriResolver( PhysicalResourceProvider.INSTANCE, packageMap); UriResolver sdkResolver; - if (embedderSdk == null || embedderSdk.urlMappings.length == 0) { + if (embedderSdk == null || embedderSdk.urlMappings.isEmpty) { // The embedder uri resolver has no mappings. Use the default Dart SDK // uri resolver. sdkResolver = new DartUriResolver(sdk); diff --git a/lib/src/special_elements.dart b/lib/src/special_elements.dart index b2617a05b9..9da4bcddd3 100644 --- a/lib/src/special_elements.dart +++ b/lib/src/special_elements.dart @@ -87,7 +87,7 @@ Set specialLibraryFiles(DartSdk sdk) => _specialClassDefinitions.values class SpecialClasses { final Map _specialClass = {}; - SpecialClasses() {} + SpecialClasses(); /// Add a class object that could be special. void addSpecial(Class aClass) { diff --git a/pubspec.yaml b/pubspec.yaml index 673774b2b3..0218ee00d2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,7 @@ dev_dependencies: io: ^0.3.0 http: ^0.12.0 meta: ^1.0.0 + pedantic: ^1.5.0 test: ^1.3.0 executables: diff --git a/test/src/utils.dart b/test/src/utils.dart index ff6f728953..8d7687d076 100644 --- a/test/src/utils.dart +++ b/test/src/utils.dart @@ -242,7 +242,7 @@ class SubprocessLauncher { // from flutter:dev/tools/dartdoc.dart, modified static Future _printStream(Stream> stream, Stdout output, - {String prefix: '', Iterable Function(String line) filter}) { + {String prefix = '', Iterable Function(String line) filter}) { assert(prefix != null); if (filter == null) filter = (line) => [line]; return stream @@ -273,7 +273,7 @@ class SubprocessLauncher { Future> runStreamed(String executable, List arguments, {String workingDirectory, Map environment, - bool includeParentEnvironment: true, + bool includeParentEnvironment = true, void Function(String) perLine}) async { environment ??= {}; environment.addAll(environmentDefaults); diff --git a/tool/doc_packages.dart b/tool/doc_packages.dart index ade349f48f..37e9206e0e 100644 --- a/tool/doc_packages.dart +++ b/tool/doc_packages.dart @@ -60,7 +60,7 @@ ArgParser _createArgsParser() { } /// Print help if we are passed the help option or invalid arguments. -void _printUsageAndExit(ArgParser parser, {int exitCode: 0}) { +void _printUsageAndExit(ArgParser parser, {int exitCode = 0}) { print('Generate documentation for published pub packages.\n'); print('Usage: _doc_packages [OPTIONS] \n'); print(parser.usage); @@ -194,8 +194,8 @@ Future _generateFor(PackageInfo package) async { Future _exec(String command, List args, {String cwd, - bool quiet: false, - Duration timeout: const Duration(seconds: 60)}) { + bool quiet = false, + Duration timeout = const Duration(seconds: 60)}) { return Process.start(command, args, workingDirectory: cwd) .then((Process process) { if (!quiet) { diff --git a/tool/grind.dart b/tool/grind.dart index 75ab3374c4..dff46a34c4 100644 --- a/tool/grind.dart +++ b/tool/grind.dart @@ -237,7 +237,7 @@ class WarningsCollection { final String branch; final String pubCachePath; WarningsCollection(this.tempDir, this.pubCachePath, this.branch) - : this.warningKeyCounts = new Map() {} + : this.warningKeyCounts = new Map(); static const String kPubCachePathReplacement = '_xxxPubDirectoryxxx_'; static const String kTempDirReplacement = '_xxxTempDirectoryxxx_'; @@ -943,7 +943,7 @@ Future buildDartdocFlutterPluginDocs() async { @Task('Verify docs for a package that requires flutter with remote linking') Future testDartdocFlutterPlugin() async { WarningsCollection warnings = await _buildDartdocFlutterPluginDocs(); - if (!warnings.warningKeyCounts.isEmpty) { + if (warnings.warningKeyCounts.isNotEmpty) { fail('No warnings should exist in : ${warnings.warningKeyCounts}'); } // Verify that links to Dart SDK and Flutter SDK go to the flutter site.