Skip to content

Commit 6ac4369

Browse files
committed
Address some more linter/typing concerns, update analysis_options.yaml.
1 parent a020f8b commit 6ac4369

File tree

4 files changed

+102
-72
lines changed

4 files changed

+102
-72
lines changed

analysis_options.yaml

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,62 +3,89 @@ analyzer:
33

44
linter:
55
rules:
6-
# errors
7-
- avoid_empty_else
8-
- avoid_slow_async_io
9-
- cancel_subscriptions
10-
- close_sinks
11-
- comment_references
12-
- control_flow_in_finally
13-
- hash_and_equals
14-
- iterable_contains_unrelated_type
15-
- list_remove_unrelated_type
16-
- no_adjacent_strings_in_list
17-
- no_duplicate_case_values
18-
- test_types_in_equals
19-
- throw_in_finally
20-
- unrelated_type_equality_checks
21-
- valid_regexps
22-
# style rules
6+
- always_declare_return_types
237
- always_put_control_body_on_new_line
8+
- always_put_required_named_parameters_first
249
- always_require_non_null_named_parameters
10+
# - always_specify_types
11+
- annotate_overrides
2512
- avoid_annotating_with_dynamic
13+
# - avoid_as
2614
- avoid_catches_without_on_clauses
15+
# - avoid_catching_errors
2716
- avoid_classes_with_only_static_members
17+
- avoid_empty_else
18+
- avoid_function_literals_in_foreach_calls
19+
- avoid_init_to_null
2820
- avoid_null_checks_in_equality_operators
21+
# - avoid_positional_boolean_parameters
2922
- avoid_return_types_on_setters
3023
- avoid_returning_null
3124
- avoid_returning_this
3225
- avoid_setters_without_getters
26+
- avoid_slow_async_io
3327
- avoid_types_on_closure_parameters
3428
- await_only_futures
3529
- camel_case_types
30+
- cancel_subscriptions
31+
# - cascade_invocations
32+
- close_sinks
33+
- comment_references
34+
# - constant_identifier_names
35+
- control_flow_in_finally
3636
- directives_ordering
3737
- empty_catches
3838
- empty_constructor_bodies
39+
- empty_statements
40+
- hash_and_equals
3941
- implementation_imports
42+
- invariant_booleans
43+
- iterable_contains_unrelated_type
4044
- join_return_with_assignment
4145
- library_names
4246
- library_prefixes
47+
- list_remove_unrelated_type
48+
- literal_only_boolean_expressions
49+
- no_adjacent_strings_in_list
50+
- no_duplicate_case_values
4351
- non_constant_identifier_names
52+
# - omit_local_variable_types
53+
# - one_member_abstracts
4454
- only_throw_errors
4555
- overridden_fields
4656
- package_api_docs
57+
- package_names
4758
- package_prefixed_library_names
59+
# - parameter_assignments
4860
- prefer_adjacent_string_concatenation
61+
- prefer_asserts_in_initializer_lists
62+
# - prefer_bool_in_asserts
4963
- prefer_collection_literals
5064
- prefer_conditional_assignment
5165
- prefer_const_constructors
66+
- prefer_const_constructors_in_immutables
5267
- prefer_constructors_over_static_methods
5368
- prefer_contains
69+
# - prefer_expression_function_bodies
70+
- prefer_final_fields
71+
# - prefer_final_locals
5472
- prefer_foreach
5573
- prefer_function_declarations_over_variables
5674
- prefer_initializing_formals
5775
- prefer_interpolation_to_compose_strings
5876
- prefer_is_empty
5977
- prefer_is_not_empty
78+
- prefer_single_quotes
79+
# - prefer_typing_uninitialized_variables
80+
# - public_member_api_docs
81+
- recursive_getters
6082
- slash_for_doc_comments
83+
# - sort_constructors_first
84+
# - sort_unnamed_constructors_first
6185
- super_goes_last
86+
- test_types_in_equals
87+
- throw_in_finally
88+
# - type_annotate_public_apis
6289
- type_init_formals
6390
- unawaited_futures
6491
- unnecessary_brace_in_string_interps
@@ -67,9 +94,11 @@ linter:
6794
- unnecessary_null_aware_assignments
6895
- unnecessary_null_in_if_null_operators
6996
- unnecessary_overrides
97+
# - unnecessary_statements
98+
# - unnecessary_this
99+
- unrelated_type_equality_checks
70100
- use_rethrow_when_possible
71101
- use_setters_to_change_properties
72102
- use_string_buffers
73103
- use_to_and_as_if_applicable
74-
# pub rules
75-
- package_names
104+
- valid_regexps

lib/xml/builder.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,10 @@ class XmlBuilder {
115115
/// });
116116
///
117117
void element(String name,
118-
{String namespace: null,
118+
{String namespace,
119119
Map<String, String> namespaces: const {},
120120
Map<String, String> attributes: const {},
121-
Object nest: null}) {
121+
Object nest}) {
122122
var element = new XmlElementBuilder();
123123
_stack.add(element);
124124
namespaces.forEach(this.namespace);

lib/xml/grammar.dart

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,31 @@ import 'package:xml/xml/utils/entities.dart';
77
/// XML grammar definition with [TNode] and [TName].
88
abstract class XmlGrammarDefinition<TNode, TName> extends GrammarDefinition {
99
// name patterns
10-
static const NAME_START_CHARS = ':A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF'
10+
static const String NAME_START_CHARS = ':A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF'
1111
'\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001\uD7FF'
1212
'\uF900-\uFDCF\uFDF0-\uFFFD';
13-
static const NAME_CHARS = '-.0-9\u00B7\u0300-\u036F\u203F-\u2040$NAME_START_CHARS';
14-
static const CHAR_DATA = '^<';
13+
static const String NAME_CHARS = '-.0-9\u00B7\u0300-\u036F\u203F-\u2040$NAME_START_CHARS';
14+
static const String CHAR_DATA = '^<';
1515

1616
// basic tokens
17-
static const DOUBLE_QUOTE = '"';
18-
static const SINGLE_QUOTE = "'";
19-
static const EQUALS = '=';
20-
static const WHITESPACE = ' ';
21-
static const OPEN_COMMENT = '<!--';
22-
static const CLOSE_COMMENT = '-->';
23-
static const OPEN_CDATA = '<![CDATA[';
24-
static const CLOSE_CDATA = ']]>';
25-
static const OPEN_ELEMENT = '<';
26-
static const CLOSE_ELEMENT = '>';
27-
static const OPEN_END_ELEMENT = '</';
28-
static const CLOSE_END_ELEMENT = '/>';
29-
static const OPEN_DOCTYPE = '<!DOCTYPE';
30-
static const CLOSE_DOCTYPE = '>';
31-
static const OPEN_DOCTYPE_BLOCK = '[';
32-
static const CLOSE_DOCTYPE_BLOCK = ']';
33-
static const OPEN_PROCESSING = '<?';
34-
static const CLOSE_PROCESSING = '?>';
17+
static const String DOUBLE_QUOTE = '"';
18+
static const String SINGLE_QUOTE = "'";
19+
static const String EQUALS = '=';
20+
static const String WHITESPACE = ' ';
21+
static const String OPEN_COMMENT = '<!--';
22+
static const String CLOSE_COMMENT = '-->';
23+
static const String OPEN_CDATA = '<![CDATA[';
24+
static const String CLOSE_CDATA = ']]>';
25+
static const String OPEN_ELEMENT = '<';
26+
static const String CLOSE_ELEMENT = '>';
27+
static const String OPEN_END_ELEMENT = '</';
28+
static const String CLOSE_END_ELEMENT = '/>';
29+
static const String OPEN_DOCTYPE = '<!DOCTYPE';
30+
static const String CLOSE_DOCTYPE = '>';
31+
static const String OPEN_DOCTYPE_BLOCK = '[';
32+
static const String CLOSE_DOCTYPE_BLOCK = ']';
33+
static const String OPEN_PROCESSING = '<?';
34+
static const String CLOSE_PROCESSING = '?>';
3535

3636
// parser callbacks
3737
TNode createAttribute(TName name, String text, XmlAttributeType type);
@@ -45,39 +45,40 @@ abstract class XmlGrammarDefinition<TNode, TName> extends GrammarDefinition {
4545
TNode createText(String text);
4646

4747
// productions
48-
start() => ref(document).end();
48+
@override
49+
Parser start() => ref(document).end();
4950

50-
attribute() => ref(qualified)
51+
Parser attribute() => ref(qualified)
5152
.seq(ref(spaceOptional))
5253
.seq(char(EQUALS))
5354
.seq(ref(spaceOptional))
5455
.seq(ref(attributeValue))
5556
.map((each) => createAttribute(each[0] as TName, each[4][0], each[4][1]));
56-
attributeValue() => ref(attributeValueDouble).or(ref(attributeValueSingle));
57-
attributeValueDouble() => char(DOUBLE_QUOTE)
57+
Parser attributeValue() => ref(attributeValueDouble).or(ref(attributeValueSingle));
58+
Parser attributeValueDouble() => char(DOUBLE_QUOTE)
5859
.seq(new XmlCharacterDataParser(DOUBLE_QUOTE, 0))
5960
.seq(char(DOUBLE_QUOTE))
6061
.map((each) => [each[1], XmlAttributeType.DOUBLE_QUOTE]);
61-
attributeValueSingle() => char(SINGLE_QUOTE)
62+
Parser attributeValueSingle() => char(SINGLE_QUOTE)
6263
.seq(new XmlCharacterDataParser(SINGLE_QUOTE, 0))
6364
.seq(char(SINGLE_QUOTE))
6465
.map((each) => [each[1], XmlAttributeType.SINGLE_QUOTE]);
65-
attributes() => ref(space).seq(ref(attribute)).pick(1).star();
66-
comment() => string(OPEN_COMMENT)
66+
Parser attributes() => ref(space).seq(ref(attribute)).pick(1).star();
67+
Parser comment() => string(OPEN_COMMENT)
6768
.seq(any().starLazy(string(CLOSE_COMMENT)).flatten())
6869
.seq(string(CLOSE_COMMENT))
6970
.map((each) => createComment(each[1]));
70-
cdata() => string(OPEN_CDATA)
71+
Parser cdata() => string(OPEN_CDATA)
7172
.seq(any().starLazy(string(CLOSE_CDATA)).flatten())
7273
.seq(string(CLOSE_CDATA))
7374
.map((each) => createCDATA(each[1]));
74-
content() => ref(characterData)
75+
Parser content() => ref(characterData)
7576
.or(ref(element))
7677
.or(ref(processing))
7778
.or(ref(comment))
7879
.or(ref(cdata))
7980
.star();
80-
doctype() => string(OPEN_DOCTYPE)
81+
Parser doctype() => string(OPEN_DOCTYPE)
8182
.seq(ref(space))
8283
.seq(ref(nameToken)
8384
.or(ref(attributeValue))
@@ -91,7 +92,7 @@ abstract class XmlGrammarDefinition<TNode, TName> extends GrammarDefinition {
9192
.seq(ref(spaceOptional))
9293
.seq(char(CLOSE_DOCTYPE))
9394
.map((each) => createDoctype(each[2]));
94-
document() => ref(misc)
95+
Parser document() => ref(misc)
9596
.seq(ref(doctype).optional())
9697
.seq(ref(misc))
9798
.seq(ref(element))
@@ -107,7 +108,7 @@ abstract class XmlGrammarDefinition<TNode, TName> extends GrammarDefinition {
107108
nodes.addAll(each[4] as Iterable<TNode>);
108109
return createDocument(nodes);
109110
});
110-
element() => char(OPEN_ELEMENT)
111+
Parser element() => char(OPEN_ELEMENT)
111112
.seq(ref(qualified))
112113
.seq(ref(attributes))
113114
.seq(ref(spaceOptional))
@@ -129,20 +130,20 @@ abstract class XmlGrammarDefinition<TNode, TName> extends GrammarDefinition {
129130
}
130131
}
131132
});
132-
processing() => string(OPEN_PROCESSING)
133+
Parser processing() => string(OPEN_PROCESSING)
133134
.seq(ref(nameToken))
134135
.seq(ref(space).seq(any().starLazy(string(CLOSE_PROCESSING)).flatten()).pick(1).optional(''))
135136
.seq(string(CLOSE_PROCESSING))
136137
.map((each) => createProcessing(each[1], each[2]));
137-
qualified() => ref(nameToken).map(createQualified);
138+
Parser qualified() => ref(nameToken).map(createQualified);
138139

139-
characterData() => new XmlCharacterDataParser(OPEN_ELEMENT, 1).map(createText);
140-
misc() => ref(spaceText).or(ref(comment)).or(ref(processing)).star();
141-
space() => whitespace().plus();
142-
spaceText() => ref(space).flatten().map(createText);
143-
spaceOptional() => whitespace().star();
140+
Parser characterData() => new XmlCharacterDataParser(OPEN_ELEMENT, 1).map(createText);
141+
Parser misc() => ref(spaceText).or(ref(comment)).or(ref(processing)).star();
142+
Parser space() => whitespace().plus();
143+
Parser spaceText() => ref(space).flatten().map(createText);
144+
Parser spaceOptional() => whitespace().star();
144145

145-
nameToken() => ref(nameStartChar).seq(ref(nameChar).star()).flatten();
146-
nameStartChar() => pattern(NAME_START_CHARS, 'Expected name');
147-
nameChar() => pattern(NAME_CHARS);
146+
Parser nameToken() => ref(nameStartChar).seq(ref(nameChar).star()).flatten();
147+
Parser nameStartChar() => pattern(NAME_START_CHARS, 'Expected name');
148+
Parser nameChar() => pattern(NAME_CHARS);
148149
}

test/xml_test.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void assertTextInvariants(XmlNode xml) {
128128
reason: 'All nodes are supposed to return text strings.');
129129
}
130130
if (node is XmlParent) {
131-
var previousType = null;
131+
var previousType;
132132
var nodeTypes = node.children
133133
.map((node) => node.nodeType);
134134
for (var currentType in nodeTypes) {
@@ -340,8 +340,8 @@ void main() {
340340
XmlDocument document = parse('<element attr="value1">text</element>');
341341
XmlElement node = document.rootElement;
342342
expect(() => new XmlElement(node.name, [], []), throwsStateError);
343-
expect(() => new XmlElement(new XmlName("data"), node.attributes, []), throwsStateError);
344-
expect(() => new XmlElement(new XmlName("data"), [], node.children), throwsStateError);
343+
expect(() => new XmlElement(new XmlName('data'), node.attributes, []), throwsStateError);
344+
expect(() => new XmlElement(new XmlName('data'), [], node.children), throwsStateError);
345345
});
346346
test('attribute', () {
347347
XmlDocument document = parse('<data ns:attr="Am I or are the other crazy?" />');
@@ -404,7 +404,7 @@ void main() {
404404
test('attribute (readopt name)', () {
405405
XmlDocument document = parse('<data ns:attr=\'&lt;&gt;&amp;&apos;&quot;&#xA;&#xD;&#x9;\' />');
406406
XmlAttribute node = document.rootElement.attributes.single;
407-
expect(() => new XmlAttribute(node.name, ""), throwsStateError);
407+
expect(() => new XmlAttribute(node.name, ''), throwsStateError);
408408
});
409409
test('text', () {
410410
XmlDocument document = parse('<data>Am I or are the other crazy?</data>');
@@ -551,24 +551,24 @@ void main() {
551551
' <body lang="en"/>'
552552
'</html>');
553553
List<XmlNode> nodes = new List.from(document.descendants)..add(document);
554-
nodes.forEach((node) {
554+
for (var node in nodes) {
555555
if (node is XmlAttribute || node is XmlElement) {
556556
expect((node as XmlNamed).name.namespaceUri, 'http://www.w3.org/1999/xhtml');
557557
}
558-
});
558+
}
559559
});
560560
test('prefix namespace', () {
561561
XmlDocument document = parse(
562562
'<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">'
563563
' <xhtml:body xhtml:lang="en"/>'
564564
'</xhtml:html>');
565565
List<XmlNode> nodes = new List.from(document.descendants)..add(document);
566-
nodes.forEach((node) {
566+
for (var node in nodes) {
567567
if ((node is XmlAttribute && node.name.prefix != 'xmlns') ||
568568
(node is XmlElement)) {
569569
expect((node as XmlNamed).name.namespaceUri, 'http://www.w3.org/1999/xhtml');
570570
}
571-
});
571+
}
572572
});
573573
});
574574
group('entities', () {

0 commit comments

Comments
 (0)