Nikolas Rimikis
1 year ago
committed by
GitHub
56 changed files with 429 additions and 105 deletions
@ -1 +1 @@ |
|||||||
include: package:nit_picking/flutter.yaml |
include: package:neon_lints/flutter.yaml |
||||||
|
@ -0,0 +1,4 @@ |
|||||||
|
# melos_managed_dependency_overrides: neon_lints |
||||||
|
dependency_overrides: |
||||||
|
neon_lints: |
||||||
|
path: ../../neon_lints |
@ -0,0 +1,4 @@ |
|||||||
|
# melos_managed_dependency_overrides: neon_lints |
||||||
|
dependency_overrides: |
||||||
|
neon_lints: |
||||||
|
path: ../../neon_lints |
@ -1 +1 @@ |
|||||||
include: package:nit_picking/dart.yaml |
include: package:neon_lints/dart.yaml |
||||||
|
@ -0,0 +1,4 @@ |
|||||||
|
# melos_managed_dependency_overrides: neon_lints |
||||||
|
dependency_overrides: |
||||||
|
neon_lints: |
||||||
|
path: ../neon_lints |
@ -0,0 +1,12 @@ |
|||||||
|
# Files and directories created by pub. |
||||||
|
.dart_tool/ |
||||||
|
.packages |
||||||
|
|
||||||
|
# Conventional directory for build outputs. |
||||||
|
build/ |
||||||
|
|
||||||
|
# Omit committing pubspec.lock for library packages; see |
||||||
|
# https://dart.dev/guides/libraries/private-files#pubspeclock. |
||||||
|
pubspec.lock |
||||||
|
|
||||||
|
coverage/ |
@ -0,0 +1,8 @@ |
|||||||
|
A package containing a very strict set of linting rules. |
||||||
|
|
||||||
|
### Update rules: |
||||||
|
To update the rules you need to update the `commitHash` variable in [neon_lints.dart](bin/neon_lints.dart) and execute it by running: |
||||||
|
```sh |
||||||
|
fvm dart run bin/neon_lints.dart |
||||||
|
``` |
||||||
|
|
@ -0,0 +1,67 @@ |
|||||||
|
import 'dart:io'; |
||||||
|
|
||||||
|
import 'package:http/http.dart' as http; |
||||||
|
import 'package:yaml/yaml.dart'; |
||||||
|
|
||||||
|
/// Disabled rules. |
||||||
|
/// |
||||||
|
/// These rules will be added but disabled. |
||||||
|
const disabledRules = [ |
||||||
|
'always_specify_types', |
||||||
|
'avoid_annotating_with_dynamic', |
||||||
|
'avoid_as', |
||||||
|
'avoid_catches_without_on_clauses', |
||||||
|
'avoid_catching_errors', |
||||||
|
'avoid_classes_with_only_static_members', |
||||||
|
'avoid_final_parameters', |
||||||
|
'avoid_print', |
||||||
|
'diagnostic_describe_all_properties', |
||||||
|
'lines_longer_than_80_chars', |
||||||
|
'no_default_cases', |
||||||
|
'one_member_abstracts', |
||||||
|
'prefer_double_quotes', |
||||||
|
'prefer_relative_imports', |
||||||
|
'unnecessary_final', |
||||||
|
]; |
||||||
|
|
||||||
|
/// Rules that won't be added to the list. |
||||||
|
/// |
||||||
|
/// This is needed for rules not yet available in the current dart version. |
||||||
|
const excludedRules = [ |
||||||
|
'no_self_assignments', |
||||||
|
'no_wildcard_variable_uses', |
||||||
|
]; |
||||||
|
|
||||||
|
/// Commit hash to use to fetch the rules from upstream |
||||||
|
const commitHash = '7f40f11'; |
||||||
|
|
||||||
|
Future main() async { |
||||||
|
final uri = Uri.parse('https://raw.githubusercontent.com/dart-lang/linter/$commitHash/example/all.yaml'); |
||||||
|
final result = await http.get(uri); |
||||||
|
final document = loadYaml(result.body) as YamlMap; |
||||||
|
final rules = (document['linter'] as YamlMap)['rules'] as YamlList; |
||||||
|
|
||||||
|
final buffer = StringBuffer(''' |
||||||
|
analyzer: |
||||||
|
language: |
||||||
|
strict-casts: true |
||||||
|
errors: |
||||||
|
flutter_style_todos: ignore |
||||||
|
todo: ignore |
||||||
|
exclude: |
||||||
|
- "**.g.dart" |
||||||
|
- "**.mocks.dart" |
||||||
|
linter: |
||||||
|
rules: |
||||||
|
'''); |
||||||
|
|
||||||
|
for (final line in rules) { |
||||||
|
final excluded = excludedRules.contains(line); |
||||||
|
if (!excluded) { |
||||||
|
final disabled = disabledRules.contains(line); |
||||||
|
buffer.writeln(' $line: ${!disabled}'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
File('lib/dart.yaml').writeAsStringSync(buffer.toString()); |
||||||
|
} |
@ -0,0 +1,225 @@ |
|||||||
|
analyzer: |
||||||
|
language: |
||||||
|
strict-casts: true |
||||||
|
errors: |
||||||
|
flutter_style_todos: ignore |
||||||
|
todo: ignore |
||||||
|
exclude: |
||||||
|
- "**.g.dart" |
||||||
|
- "**.mocks.dart" |
||||||
|
linter: |
||||||
|
rules: |
||||||
|
always_declare_return_types: true |
||||||
|
always_put_control_body_on_new_line: true |
||||||
|
always_put_required_named_parameters_first: true |
||||||
|
always_specify_types: false |
||||||
|
always_use_package_imports: true |
||||||
|
annotate_overrides: true |
||||||
|
avoid_annotating_with_dynamic: false |
||||||
|
avoid_bool_literals_in_conditional_expressions: true |
||||||
|
avoid_catches_without_on_clauses: false |
||||||
|
avoid_catching_errors: false |
||||||
|
avoid_classes_with_only_static_members: false |
||||||
|
avoid_double_and_int_checks: true |
||||||
|
avoid_dynamic_calls: true |
||||||
|
avoid_empty_else: true |
||||||
|
avoid_equals_and_hash_code_on_mutable_classes: true |
||||||
|
avoid_escaping_inner_quotes: true |
||||||
|
avoid_field_initializers_in_const_classes: true |
||||||
|
avoid_final_parameters: false |
||||||
|
avoid_function_literals_in_foreach_calls: true |
||||||
|
avoid_implementing_value_types: true |
||||||
|
avoid_init_to_null: true |
||||||
|
avoid_js_rounded_ints: true |
||||||
|
avoid_multiple_declarations_per_line: true |
||||||
|
avoid_null_checks_in_equality_operators: true |
||||||
|
avoid_positional_boolean_parameters: true |
||||||
|
avoid_print: false |
||||||
|
avoid_private_typedef_functions: true |
||||||
|
avoid_redundant_argument_values: true |
||||||
|
avoid_relative_lib_imports: true |
||||||
|
avoid_renaming_method_parameters: true |
||||||
|
avoid_return_types_on_setters: true |
||||||
|
avoid_returning_null_for_void: true |
||||||
|
avoid_returning_this: true |
||||||
|
avoid_setters_without_getters: true |
||||||
|
avoid_shadowing_type_parameters: true |
||||||
|
avoid_single_cascade_in_expression_statements: true |
||||||
|
avoid_slow_async_io: true |
||||||
|
avoid_type_to_string: true |
||||||
|
avoid_types_as_parameter_names: true |
||||||
|
avoid_types_on_closure_parameters: true |
||||||
|
avoid_unnecessary_containers: true |
||||||
|
avoid_unused_constructor_parameters: true |
||||||
|
avoid_void_async: true |
||||||
|
avoid_web_libraries_in_flutter: true |
||||||
|
await_only_futures: true |
||||||
|
camel_case_extensions: true |
||||||
|
camel_case_types: true |
||||||
|
cancel_subscriptions: true |
||||||
|
cascade_invocations: true |
||||||
|
cast_nullable_to_non_nullable: true |
||||||
|
close_sinks: true |
||||||
|
collection_methods_unrelated_type: true |
||||||
|
combinators_ordering: true |
||||||
|
comment_references: true |
||||||
|
conditional_uri_does_not_exist: true |
||||||
|
constant_identifier_names: true |
||||||
|
control_flow_in_finally: true |
||||||
|
curly_braces_in_flow_control_structures: true |
||||||
|
dangling_library_doc_comments: true |
||||||
|
depend_on_referenced_packages: true |
||||||
|
deprecated_consistency: true |
||||||
|
deprecated_member_use_from_same_package: true |
||||||
|
diagnostic_describe_all_properties: false |
||||||
|
directives_ordering: true |
||||||
|
discarded_futures: true |
||||||
|
do_not_use_environment: true |
||||||
|
empty_catches: true |
||||||
|
empty_constructor_bodies: true |
||||||
|
empty_statements: true |
||||||
|
eol_at_end_of_file: true |
||||||
|
exhaustive_cases: true |
||||||
|
file_names: true |
||||||
|
flutter_style_todos: true |
||||||
|
hash_and_equals: true |
||||||
|
implementation_imports: true |
||||||
|
implicit_call_tearoffs: true |
||||||
|
implicit_reopen: true |
||||||
|
invalid_case_patterns: true |
||||||
|
join_return_with_assignment: true |
||||||
|
leading_newlines_in_multiline_strings: true |
||||||
|
library_annotations: true |
||||||
|
library_names: true |
||||||
|
library_prefixes: true |
||||||
|
library_private_types_in_public_api: true |
||||||
|
lines_longer_than_80_chars: false |
||||||
|
literal_only_boolean_expressions: true |
||||||
|
matching_super_parameters: true |
||||||
|
missing_whitespace_between_adjacent_strings: true |
||||||
|
no_adjacent_strings_in_list: true |
||||||
|
no_default_cases: false |
||||||
|
no_duplicate_case_values: true |
||||||
|
no_leading_underscores_for_library_prefixes: true |
||||||
|
no_leading_underscores_for_local_identifiers: true |
||||||
|
no_literal_bool_comparisons: true |
||||||
|
no_logic_in_create_state: true |
||||||
|
no_runtimeType_toString: true |
||||||
|
non_constant_identifier_names: true |
||||||
|
noop_primitive_operations: true |
||||||
|
null_check_on_nullable_type_parameter: true |
||||||
|
null_closures: true |
||||||
|
omit_local_variable_types: true |
||||||
|
one_member_abstracts: false |
||||||
|
only_throw_errors: true |
||||||
|
overridden_fields: true |
||||||
|
package_api_docs: true |
||||||
|
package_names: true |
||||||
|
package_prefixed_library_names: true |
||||||
|
parameter_assignments: true |
||||||
|
prefer_adjacent_string_concatenation: true |
||||||
|
prefer_asserts_in_initializer_lists: true |
||||||
|
prefer_asserts_with_message: true |
||||||
|
prefer_collection_literals: true |
||||||
|
prefer_conditional_assignment: true |
||||||
|
prefer_const_constructors: true |
||||||
|
prefer_const_constructors_in_immutables: true |
||||||
|
prefer_const_declarations: true |
||||||
|
prefer_const_literals_to_create_immutables: true |
||||||
|
prefer_constructors_over_static_methods: true |
||||||
|
prefer_contains: true |
||||||
|
prefer_double_quotes: false |
||||||
|
prefer_expression_function_bodies: true |
||||||
|
prefer_final_fields: true |
||||||
|
prefer_final_in_for_each: true |
||||||
|
prefer_final_locals: true |
||||||
|
prefer_final_parameters: true |
||||||
|
prefer_for_elements_to_map_fromIterable: true |
||||||
|
prefer_foreach: true |
||||||
|
prefer_function_declarations_over_variables: true |
||||||
|
prefer_generic_function_type_aliases: true |
||||||
|
prefer_if_elements_to_conditional_expressions: true |
||||||
|
prefer_if_null_operators: true |
||||||
|
prefer_initializing_formals: true |
||||||
|
prefer_inlined_adds: true |
||||||
|
prefer_int_literals: true |
||||||
|
prefer_interpolation_to_compose_strings: true |
||||||
|
prefer_is_empty: true |
||||||
|
prefer_is_not_empty: true |
||||||
|
prefer_is_not_operator: true |
||||||
|
prefer_iterable_whereType: true |
||||||
|
prefer_mixin: true |
||||||
|
prefer_null_aware_method_calls: true |
||||||
|
prefer_null_aware_operators: true |
||||||
|
prefer_relative_imports: false |
||||||
|
prefer_single_quotes: true |
||||||
|
prefer_spread_collections: true |
||||||
|
prefer_typing_uninitialized_variables: true |
||||||
|
prefer_void_to_null: true |
||||||
|
provide_deprecation_message: true |
||||||
|
public_member_api_docs: true |
||||||
|
recursive_getters: true |
||||||
|
require_trailing_commas: true |
||||||
|
secure_pubspec_urls: true |
||||||
|
sized_box_for_whitespace: true |
||||||
|
sized_box_shrink_expand: true |
||||||
|
slash_for_doc_comments: true |
||||||
|
sort_child_properties_last: true |
||||||
|
sort_constructors_first: true |
||||||
|
sort_pub_dependencies: true |
||||||
|
sort_unnamed_constructors_first: true |
||||||
|
test_types_in_equals: true |
||||||
|
throw_in_finally: true |
||||||
|
tighten_type_of_initializing_formals: true |
||||||
|
type_annotate_public_apis: true |
||||||
|
type_init_formals: true |
||||||
|
type_literal_in_constant_pattern: true |
||||||
|
unawaited_futures: true |
||||||
|
unnecessary_await_in_return: true |
||||||
|
unnecessary_brace_in_string_interps: true |
||||||
|
unnecessary_breaks: true |
||||||
|
unnecessary_const: true |
||||||
|
unnecessary_constructor_name: true |
||||||
|
unnecessary_final: false |
||||||
|
unnecessary_getters_setters: true |
||||||
|
unnecessary_lambdas: true |
||||||
|
unnecessary_late: true |
||||||
|
unnecessary_library_directive: true |
||||||
|
unnecessary_new: true |
||||||
|
unnecessary_null_aware_assignments: true |
||||||
|
unnecessary_null_aware_operator_on_extension_on_nullable: true |
||||||
|
unnecessary_null_checks: true |
||||||
|
unnecessary_null_in_if_null_operators: true |
||||||
|
unnecessary_nullable_for_final_variable_declarations: true |
||||||
|
unnecessary_overrides: true |
||||||
|
unnecessary_parenthesis: true |
||||||
|
unnecessary_raw_strings: true |
||||||
|
unnecessary_statements: true |
||||||
|
unnecessary_string_escapes: true |
||||||
|
unnecessary_string_interpolations: true |
||||||
|
unnecessary_this: true |
||||||
|
unnecessary_to_list_in_spreads: true |
||||||
|
unreachable_from_main: true |
||||||
|
unrelated_type_equality_checks: true |
||||||
|
unsafe_html: true |
||||||
|
use_build_context_synchronously: true |
||||||
|
use_colored_box: true |
||||||
|
use_decorated_box: true |
||||||
|
use_enums: true |
||||||
|
use_full_hex_values_for_flutter_colors: true |
||||||
|
use_function_type_syntax_for_parameters: true |
||||||
|
use_if_null_to_convert_nulls_to_bools: true |
||||||
|
use_is_even_rather_than_modulo: true |
||||||
|
use_key_in_widget_constructors: true |
||||||
|
use_late_for_private_fields_and_variables: true |
||||||
|
use_named_constants: true |
||||||
|
use_raw_strings: true |
||||||
|
use_rethrow_when_possible: true |
||||||
|
use_setters_to_change_properties: true |
||||||
|
use_string_buffers: true |
||||||
|
use_string_in_part_of_directives: true |
||||||
|
use_super_parameters: true |
||||||
|
use_test_throws_matchers: true |
||||||
|
use_to_and_as_if_applicable: true |
||||||
|
valid_regexps: true |
||||||
|
void_checks: true |
@ -0,0 +1,9 @@ |
|||||||
|
include: package:neon_lints/dart.yaml |
||||||
|
linter: |
||||||
|
rules: |
||||||
|
public_member_api_docs: false |
||||||
|
library_private_types_in_public_api: false |
||||||
|
avoid_print: true |
||||||
|
analyzer: |
||||||
|
exclude: |
||||||
|
- 'lib/generated_plugin_registrant.dart' |
@ -0,0 +1,10 @@ |
|||||||
|
name: neon_lints |
||||||
|
description: Linting package used in the nextcloud-neon project |
||||||
|
version: 1.0.0 |
||||||
|
|
||||||
|
environment: |
||||||
|
sdk: '>=3.0.0 <4.0.0' |
||||||
|
|
||||||
|
dependencies: |
||||||
|
http: ^1.1.0 |
||||||
|
yaml: ^3.1.2 |
@ -1 +1 @@ |
|||||||
include: package:nit_picking/dart.yaml |
include: package:neon_lints/dart.yaml |
||||||
|
@ -1,6 +1,8 @@ |
|||||||
# melos_managed_dependency_overrides: dynamite,dynamite_runtime |
# melos_managed_dependency_overrides: dynamite,dynamite_runtime,neon_lints |
||||||
dependency_overrides: |
dependency_overrides: |
||||||
dynamite: |
dynamite: |
||||||
path: ../dynamite/dynamite |
path: ../dynamite/dynamite |
||||||
dynamite_runtime: |
dynamite_runtime: |
||||||
path: ../dynamite/dynamite_runtime |
path: ../dynamite/dynamite_runtime |
||||||
|
neon_lints: |
||||||
|
path: ../neon_lints |
||||||
|
@ -1 +1 @@ |
|||||||
include: package:nit_picking/dart.yaml |
include: package:neon_lints/dart.yaml |
||||||
|
Loading…
Reference in new issue