Enable and fix a number of lints
diff --git a/pkgs/pubspec_parse/analysis_options.yaml b/pkgs/pubspec_parse/analysis_options.yaml
index ed170c1..b959116 100644
--- a/pkgs/pubspec_parse/analysis_options.yaml
+++ b/pkgs/pubspec_parse/analysis_options.yaml
@@ -20,12 +20,13 @@
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
+ - avoid_returning_null_for_future
+ - avoid_shadowing_type_parameters
- avoid_types_as_parameter_names
- avoid_unused_constructor_parameters
- await_only_futures
- camel_case_types
- cancel_subscriptions
- #- cascade_invocations
- comment_references
- constant_identifier_names
- control_flow_in_finally
@@ -44,10 +45,11 @@
- no_adjacent_strings_in_list
- no_duplicate_case_values
- non_constant_identifier_names
+ - null_closures
- omit_local_variable_types
- only_throw_errors
- overridden_fields
- #- package_api_docs
+ - package_api_docs
- package_names
- package_prefixed_library_names
- prefer_adjacent_string_concatenation
@@ -57,6 +59,7 @@
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
+ - prefer_final_locals
- prefer_initializing_formals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
@@ -70,14 +73,17 @@
- throw_in_finally
- type_init_formals
- unawaited_futures
+ - unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
+ - unnecessary_parenthesis
- unnecessary_statements
- unnecessary_this
- unrelated_type_equality_checks
+ - use_function_type_syntax_for_parameters
- use_rethrow_when_possible
- valid_regexps
diff --git a/pkgs/pubspec_parse/lib/src/dependency.dart b/pkgs/pubspec_parse/lib/src/dependency.dart
index 0fb761c..cba01dc 100644
--- a/pkgs/pubspec_parse/lib/src/dependency.dart
+++ b/pkgs/pubspec_parse/lib/src/dependency.dart
@@ -12,7 +12,7 @@
Map<String, Dependency> parseDeps(Map source) =>
source?.map((k, v) {
- var key = k as String;
+ final key = k as String;
Dependency value;
try {
value = _fromJson(v);
@@ -23,7 +23,7 @@
// extract the associated error information.
var message = e.message;
- var innerError = e.innerError;
+ final innerError = e.innerError;
// json_annotation should handle FormatException...
// https://github.com/dart-lang/json_serializable/issues/233
if (innerError is FormatException) {
@@ -51,13 +51,13 @@
}
if (data is Map) {
- var matchedKeys =
+ final matchedKeys =
data.keys.cast<String>().where((key) => key != 'version').toList();
if (data.isEmpty || (matchedKeys.isEmpty && data.containsKey('version'))) {
return _$HostedDependencyFromJson(data);
} else {
- var weirdKey = matchedKeys.firstWhere((k) => !_sourceKeys.contains(k),
+ final weirdKey = matchedKeys.firstWhere((k) => !_sourceKeys.contains(k),
orElse: () => null);
if (weirdKey != null) {
@@ -69,7 +69,7 @@
'A dependency may only have one source.');
}
- var key = matchedKeys.single;
+ final key = matchedKeys.single;
try {
switch (key) {
@@ -146,7 +146,7 @@
/// Supports URIs like `[user@]host.xz:path/to/repo.git/`
/// See https://git-scm.com/docs/git-clone#_git_urls_a_id_urls_a
Uri _tryParseScpUri(String value) {
- var colonIndex = value.indexOf(':');
+ final colonIndex = value.indexOf(':');
if (colonIndex < 0) {
return null;
@@ -154,7 +154,7 @@
// If the first colon is part of a scheme, it's not an scp-like URI
return null;
}
- var slashIndex = value.indexOf('/');
+ final slashIndex = value.indexOf('/');
if (slashIndex >= 0 && slashIndex < colonIndex) {
// Per docs: This syntax is only recognized if there are no slashes before
@@ -164,11 +164,11 @@
return null;
}
- var atIndex = value.indexOf('@');
+ final atIndex = value.indexOf('@');
if (colonIndex > atIndex) {
- var user = atIndex >= 0 ? value.substring(0, atIndex) : null;
- var host = value.substring(atIndex + 1, colonIndex);
- var path = value.substring(colonIndex + 1);
+ final user = atIndex >= 0 ? value.substring(0, atIndex) : null;
+ final host = value.substring(atIndex + 1, colonIndex);
+ final path = value.substring(colonIndex + 1);
return Uri(scheme: 'ssh', userInfo: user, host: host, path: path);
}
return null;
diff --git a/pkgs/pubspec_parse/lib/src/errors.dart b/pkgs/pubspec_parse/lib/src/errors.dart
index 637c5a8..aba6970 100644
--- a/pkgs/pubspec_parse/lib/src/errors.dart
+++ b/pkgs/pubspec_parse/lib/src/errors.dart
@@ -10,13 +10,13 @@
ParsedYamlException parsedYamlExceptionFromError(
CheckedFromJsonException error, StackTrace stack) {
- var innerError = error.innerError;
+ final innerError = error.innerError;
if (innerError is InvalidKeyException) {
- var map = innerError.map;
+ final map = innerError.map;
if (map is YamlMap) {
// if the associated key exists, use that as the error node,
// otherwise use the map itself
- var node = map.nodes.keys.cast<YamlNode>().singleWhere((key) {
+ final node = map.nodes.keys.cast<YamlNode>().singleWhere((key) {
return key.value == innerError.key;
}, orElse: () => map);
@@ -27,7 +27,7 @@
return innerError;
}
- var yamlMap = error.map as YamlMap;
+ final yamlMap = error.map as YamlMap;
var yamlNode = yamlMap.nodes[error.key];
String message;
diff --git a/pkgs/pubspec_parse/lib/src/pubspec.dart b/pkgs/pubspec_parse/lib/src/pubspec.dart
index a8ef2fe..df71262 100644
--- a/pkgs/pubspec_parse/lib/src/pubspec.dart
+++ b/pkgs/pubspec_parse/lib/src/pubspec.dart
@@ -78,7 +78,7 @@
factory Pubspec.fromJson(Map json) => _$PubspecFromJson(json);
factory Pubspec.parse(String yaml, {sourceUrl}) {
- var item = loadYaml(yaml, sourceUrl: sourceUrl);
+ final item = loadYaml(yaml, sourceUrl: sourceUrl);
if (item == null) {
throw ArgumentError.notNull('yaml');
@@ -100,7 +100,7 @@
}
static List<String> _normalizeAuthors(String author, List<String> authors) {
- var value = Set<String>();
+ final value = Set<String>();
if (author != null) {
value.add(author);
}
@@ -115,7 +115,7 @@
Map<String, VersionConstraint> _environmentMap(Map source) =>
source.map((k, value) {
- var key = k as String;
+ final key = k as String;
if (key == 'dart') {
// github.com/dart-lang/pub/blob/d84173eeb03c3/lib/src/pubspec.dart#L342
// 'dart' is not allowed as a key!
diff --git a/pkgs/pubspec_parse/test/dependency_test.dart b/pkgs/pubspec_parse/test/dependency_test.dart
index 3bc890a..6c7d968 100644
--- a/pkgs/pubspec_parse/test/dependency_test.dart
+++ b/pkgs/pubspec_parse/test/dependency_test.dart
@@ -4,8 +4,8 @@
import 'dart:io';
-import 'package:pubspec_parse/pubspec_parse.dart';
import 'package:pub_semver/pub_semver.dart';
+import 'package:pubspec_parse/pubspec_parse.dart';
import 'package:test/test.dart';
import 'test_utils.dart';
@@ -49,20 +49,20 @@
void _hostedDependency() {
test('null', () {
- var dep = _dependency<HostedDependency>(null);
+ final dep = _dependency<HostedDependency>(null);
expect(dep.version.toString(), 'any');
expect(dep.hosted, isNull);
expect(dep.toString(), 'HostedDependency: any');
});
test('empty map', () {
- var dep = _dependency<HostedDependency>({});
+ final dep = _dependency<HostedDependency>({});
expect(dep.hosted, isNull);
expect(dep.toString(), 'HostedDependency: any');
});
test('string version', () {
- var dep = _dependency<HostedDependency>('^1.0.0');
+ final dep = _dependency<HostedDependency>('^1.0.0');
expect(dep.version.toString(), '^1.0.0');
expect(dep.hosted, isNull);
expect(dep.toString(), 'HostedDependency: ^1.0.0');
@@ -76,14 +76,14 @@
});
test('map w/ just version', () {
- var dep = _dependency<HostedDependency>({'version': '^1.0.0'});
+ final dep = _dependency<HostedDependency>({'version': '^1.0.0'});
expect(dep.version.toString(), '^1.0.0');
expect(dep.hosted, isNull);
expect(dep.toString(), 'HostedDependency: ^1.0.0');
});
test('map w/ version and hosted as Map', () {
- var dep = _dependency<HostedDependency>({
+ final dep = _dependency<HostedDependency>({
'version': '^1.0.0',
'hosted': {'name': 'hosted_name', 'url': 'hosted_url'}
});
@@ -115,7 +115,7 @@
});
test('map w/ version and hosted as String', () {
- var dep = _dependency<HostedDependency>(
+ final dep = _dependency<HostedDependency>(
{'version': '^1.0.0', 'hosted': 'hosted_name'});
expect(dep.version.toString(), '^1.0.0');
expect(dep.hosted.name, 'hosted_name');
@@ -124,7 +124,7 @@
});
test('map w/ hosted as String', () {
- var dep = _dependency<HostedDependency>({'hosted': 'hosted_name'});
+ final dep = _dependency<HostedDependency>({'hosted': 'hosted_name'});
expect(dep.version, VersionConstraint.any);
expect(dep.hosted.name, 'hosted_name');
expect(dep.hosted.url, isNull);
@@ -139,7 +139,7 @@
});
test('map w/ null version is fine', () {
- var dep = _dependency<HostedDependency>({'version': null});
+ final dep = _dependency<HostedDependency>({'version': null});
expect(dep.version, VersionConstraint.any);
expect(dep.hosted, isNull);
expect(dep.toString(), 'HostedDependency: any');
@@ -148,14 +148,14 @@
void _sdkDependency() {
test('without version', () {
- var dep = _dependency<SdkDependency>({'sdk': 'flutter'});
+ final dep = _dependency<SdkDependency>({'sdk': 'flutter'});
expect(dep.sdk, 'flutter');
expect(dep.version, isNull);
expect(dep.toString(), 'SdkDependency: flutter');
});
test('with version', () {
- var dep = _dependency<SdkDependency>(
+ final dep = _dependency<SdkDependency>(
{'sdk': 'flutter', 'version': '>=1.2.3 <2.0.0'});
expect(dep.sdk, 'flutter');
expect(dep.version.toString(), '>=1.2.3 <2.0.0');
@@ -179,7 +179,7 @@
void _gitDependency() {
test('string', () {
- var dep = _dependency<GitDependency>({'git': 'url'});
+ final dep = _dependency<GitDependency>({'git': 'url'});
expect(dep.url.toString(), 'url');
expect(dep.path, isNull);
expect(dep.ref, isNull);
@@ -188,7 +188,7 @@
test('string with version key is ignored', () {
// Regression test for https://github.com/dart-lang/pubspec_parse/issues/13
- var dep = _dependency<GitDependency>({'git': 'url', 'version': '^1.2.3'});
+ final dep = _dependency<GitDependency>({'git': 'url', 'version': '^1.2.3'});
expect(dep.url.toString(), 'url');
expect(dep.path, isNull);
expect(dep.ref, isNull);
@@ -196,11 +196,11 @@
});
test('string with user@ URL', () {
- var skipTryParse = Platform.environment.containsKey('TRAVIS');
+ final skipTryParse = Platform.environment.containsKey('TRAVIS');
if (skipTryParse) {
print('FYI: not validating git@ URI on travis due to failure');
}
- var dep = _dependency<GitDependency>({'git': 'git@localhost:dep.git'},
+ final dep = _dependency<GitDependency>({'git': 'git@localhost:dep.git'},
skipTryPub: skipTryParse);
expect(dep.url.toString(), 'ssh://git@localhost/dep.git');
expect(dep.path, isNull);
@@ -216,7 +216,7 @@
});
test('map', () {
- var dep = _dependency<GitDependency>({
+ final dep = _dependency<GitDependency>({
'git': {'url': 'url', 'path': 'path', 'ref': 'ref'}
});
expect(dep.url.toString(), 'url');
@@ -267,13 +267,13 @@
void _pathDependency() {
test('valid', () {
- var dep = _dependency<PathDependency>({'path': '../path'});
+ final dep = _dependency<PathDependency>({'path': '../path'});
expect(dep.path, '../path');
expect(dep.toString(), 'PathDependency: path@../path');
});
test('valid with version key is ignored', () {
- var dep =
+ final dep =
_dependency<PathDependency>({'path': '../path', 'version': '^1.2.3'});
expect(dep.path, '../path');
expect(dep.toString(), 'PathDependency: path@../path');
@@ -309,14 +309,14 @@
}
T _dependency<T extends Dependency>(Object content, {bool skipTryPub = false}) {
- var value = parse({
+ final value = parse({
'name': 'sample',
'dependencies': {'dep': content}
}, skipTryPub: skipTryPub);
expect(value.name, 'sample');
expect(value.dependencies, hasLength(1));
- var entry = value.dependencies.entries.single;
+ final entry = value.dependencies.entries.single;
expect(entry.key, 'dep');
return entry.value as T;
diff --git a/pkgs/pubspec_parse/test/git_uri_test.dart b/pkgs/pubspec_parse/test/git_uri_test.dart
index a1cfdf9..36e55a8 100644
--- a/pkgs/pubspec_parse/test/git_uri_test.dart
+++ b/pkgs/pubspec_parse/test/git_uri_test.dart
@@ -1,6 +1,5 @@
-import 'package:test/test.dart';
-
import 'package:pubspec_parse/src/dependency.dart';
+import 'package:test/test.dart';
void main() {
for (var item in {
@@ -14,7 +13,7 @@
'file:///path/to/repo.git/': 'file:///path/to/repo.git/',
}.entries) {
test(item.key, () {
- var uri = parseGitUri(item.key);
+ final uri = parseGitUri(item.key);
printOnFailure(
[uri.scheme, uri.userInfo, uri.host, uri.port, uri.path].join('\n'));
diff --git a/pkgs/pubspec_parse/test/parse_test.dart b/pkgs/pubspec_parse/test/parse_test.dart
index 3ed73a5..df2475b 100644
--- a/pkgs/pubspec_parse/test/parse_test.dart
+++ b/pkgs/pubspec_parse/test/parse_test.dart
@@ -9,7 +9,7 @@
void main() {
test('minimal set values', () {
- var value = parse({'name': 'sample'});
+ final value = parse({'name': 'sample'});
expect(value.name, 'sample');
expect(value.version, isNull);
expect(value.description, isNull);
@@ -25,9 +25,9 @@
});
test('all fields set', () {
- var version = Version.parse('1.2.3');
- var sdkConstraint = VersionConstraint.parse('>=2.0.0-dev.54 <3.0.0');
- var value = parse({
+ final version = Version.parse('1.2.3');
+ final sdkConstraint = VersionConstraint.parse('>=2.0.0-dev.54 <3.0.0');
+ final value = parse({
'name': 'sample',
'version': version.toString(),
'author': 'name@example.com',
@@ -52,7 +52,7 @@
});
test('environment values can be null', () {
- var value = parse({
+ final value = parse({
'name': 'sample',
'environment': {'sdk': null}
});
@@ -63,14 +63,14 @@
group('author, authors', () {
test('one author', () {
- var value = parse({'name': 'sample', 'author': 'name@example.com'});
+ final value = parse({'name': 'sample', 'author': 'name@example.com'});
// ignore: deprecated_member_use
expect(value.author, 'name@example.com');
expect(value.authors, ['name@example.com']);
});
test('one author, via authors', () {
- var value = parse({
+ final value = parse({
'name': 'sample',
'authors': ['name@example.com']
});
@@ -80,7 +80,7 @@
});
test('many authors', () {
- var value = parse({
+ final value = parse({
'name': 'sample',
'authors': ['name@example.com', 'name2@example.com']
});
@@ -90,7 +90,7 @@
});
test('author and authors', () {
- var value = parse({
+ final value = parse({
'name': 'sample',
'author': 'name@example.com',
'authors': ['name2@example.com']
@@ -101,7 +101,7 @@
});
test('duplicate author values', () {
- var value = parse({
+ final value = parse({
'name': 'sample',
'author': 'name@example.com',
'authors': ['name@example.com', 'name@example.com']
diff --git a/pkgs/pubspec_parse/test/pub_utils.dart b/pkgs/pubspec_parse/test/pub_utils.dart
index f9e2f0c..1ebb9c7 100644
--- a/pkgs/pubspec_parse/test/pub_utils.dart
+++ b/pkgs/pubspec_parse/test/pub_utils.dart
@@ -13,10 +13,10 @@
Future<ProcResult> tryPub(String content) async {
await d.file('pubspec.yaml', content).create();
- var proc = await TestProcess.start(_pubPath, ['get', '--offline'],
+ final proc = await TestProcess.start(_pubPath, ['get', '--offline'],
workingDirectory: d.sandbox);
- var result = await ProcResult.fromTestProcess(proc);
+ final result = await ProcResult.fromTestProcess(proc);
printOnFailure([
'-----BEGIN pub output-----',
@@ -25,7 +25,7 @@
].join('\n'));
if (result.exitCode == 0) {
- var lockContent =
+ final lockContent =
File(p.join(d.sandbox, 'pubspec.lock')).readAsStringSync();
printOnFailure([
@@ -47,9 +47,9 @@
ProcResult(this.exitCode, this.lines);
static Future<ProcResult> fromTestProcess(TestProcess proc) async {
- var items = <ProcLine>[];
+ final items = <ProcLine>[];
- var values = await Future.wait([
+ final values = await Future.wait([
proc.exitCode,
proc.stdoutStream().forEach((line) => items.add(ProcLine(false, line))),
proc.stderrStream().forEach((line) => items.add(ProcLine(true, line))),
@@ -60,7 +60,7 @@
@override
String toString() {
- var buffer = StringBuffer('Exit code: $exitCode');
+ final buffer = StringBuffer('Exit code: $exitCode');
for (var line in lines) {
buffer.write('\n$line');
}
@@ -79,13 +79,13 @@
}
/// The path to the root directory of the SDK.
-final String _sdkDir = (() {
+final String _sdkDir = () {
// The Dart executable is in "/path/to/sdk/bin/dart", so two levels up is
// "/path/to/sdk".
- var aboveExecutable = p.dirname(p.dirname(Platform.resolvedExecutable));
+ final aboveExecutable = p.dirname(p.dirname(Platform.resolvedExecutable));
assert(FileSystemEntity.isFileSync(p.join(aboveExecutable, 'version')));
return aboveExecutable;
-})();
+}();
final String _pubPath =
p.join(_sdkDir, 'bin', Platform.isWindows ? 'pub.bat' : 'pub');
diff --git a/pkgs/pubspec_parse/test/test_utils.dart b/pkgs/pubspec_parse/test/test_utils.dart
index d5254db..9750bfa 100644
--- a/pkgs/pubspec_parse/test/test_utils.dart
+++ b/pkgs/pubspec_parse/test/test_utils.dart
@@ -17,7 +17,7 @@
Matcher _throwsParsedYamlException(String prettyValue) =>
throwsA(const TypeMatcher<ParsedYamlException>().having((e) {
- var message = e.formattedMessage;
+ final message = e.formattedMessage;
printOnFailure("Actual error format:\nr'''\n$message'''");
_printDebugParsedYamlException(e);
return message;
@@ -28,7 +28,7 @@
var innerStack = e.innerStack;
if (e.innerError is CheckedFromJsonException) {
- var cfje = e.innerError as CheckedFromJsonException;
+ final cfje = e.innerError as CheckedFromJsonException;
if (cfje.innerError != null) {
innerError = cfje.innerError;
innerStack = cfje.innerStack;
@@ -36,12 +36,12 @@
}
if (innerError != null) {
- var items = [innerError];
+ final items = [innerError];
if (innerStack != null) {
items.add(Trace.format(innerStack, terse: true));
}
- var content =
+ final content =
LineSplitter.split(items.join('\n')).map((e) => ' $e').join('\n');
printOnFailure('Inner error details:\n$content');
@@ -53,7 +53,7 @@
quietOnError ??= false;
skipTryPub ??= false;
- var encoded = _encodeJson(content);
+ final encoded = _encodeJson(content);
ProcResult pubResult;
if (!skipTryPub) {
@@ -62,7 +62,7 @@
}
try {
- var value = Pubspec.parse(encoded);
+ final value = Pubspec.parse(encoded);
if (pubResult != null) {
addTearDown(() {