diff --git a/analysis_options.yaml b/analysis_options.yaml index 71604a87..c169a9a0 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,4 +1,6 @@ analyzer: + plugins: + - dart_code_metrics exclude: - packages/*/lib/**/*.g.dart - packages/*/lib/src/emoji @@ -143,4 +145,43 @@ linter: - cast_nullable_to_non_nullable - unnecessary_null_checks - tighten_type_of_initializing_formals - - null_check_on_nullable_type_parameter \ No newline at end of file + - null_check_on_nullable_type_parameter + +# https://dartcodemetrics.dev/docs/getting-started/introduction +dart_code_metrics: + metrics-exclude: + - packages/*/test/** + metrics: + - weight-of-class: 0.33 + - source-lines-of-code: 90 + - cyclomatic-complexity: 20 + - maximum-nesting-level: 5 + rules: + # Dart Specific + - avoid-ignoring-return-values +# - avoid-non-null-assertion + - avoid-unused-parameters + - binary-expression-operand-order + - double-literal-format + # - member-ordering-extended + - member-ordering: + alphabetize: false + order: + - constructors + - public-fields + - private-fields + - no-boolean-literal-compare + - no-equal-arguments + - no-equal-then-else + - no-magic-number: + allowed: [ 3.14 ] + - prefer-match-file-name +# - prefer-trailing-comma: +# break-on: 2 + + # Flutter specific + - always-remove-listener + # - avoid-returning-widgets + - avoid-unnecessary-setstate + - avoid-wrapping-in-padding + diff --git a/melos.yaml b/melos.yaml index 6fee8f6f..ad15df90 100644 --- a/melos.yaml +++ b/melos.yaml @@ -11,6 +11,10 @@ scripts: run: melos run analyze && melos run format description: Run all static analysis checks + analyze:all: + run: melos run analyze && melos run metrics + description: Run all + analyze: run: | melos exec -c 5 --ignore="*example*" -- \ @@ -24,6 +28,14 @@ scripts: description: | Run `flutter format --set-exit-if-changed .` in all packages. + metrics: + run: | + melos exec -c 1 --ignore="*example*" -- \ + flutter pub run dart_code_metrics:metrics analyze lib + description: | + Run `dart_code_metrics` in all packages. + - Note: you can also rely on your IDEs Dart Analysis / Issues window. + lint:pub: run: | melos exec -c 5 --no-private --ignore="*example*" -- \ @@ -71,10 +83,13 @@ scripts: docs: run: | - npm install -g https://github.com/GetStream/stream-chat-docusaurus-cli && - npx stream-chat-docusaurus -i -s + npm install -g https://github.com/GetStream/stream-chat-docusaurus-cli && + npx stream-chat-docusaurus -i -s description: Runs the docusaurus documentation locally. +dev_dependencies: + dart_code_metrics: ^4.2.0-dev.1 + environment: sdk: '>=2.12.0 <3.0.0' - flutter: '>=1.22.4 <2.0.0' \ No newline at end of file + flutter: '>=1.17.0 <2.0.0' \ No newline at end of file diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index 81657659..015dc05e 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -27,6 +27,7 @@ dependencies: dev_dependencies: build_runner: ^2.0.1 + dart_code_metrics: ^4.2.0-dev.1 freezed: ^0.14.1+3 json_serializable: ^4.1.0 mocktail: ^0.1.1 diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 69cee1e9..6374fb50 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -55,10 +55,9 @@ flutter: uses-material-design: true dev_dependencies: + dart_code_metrics: ^4.2.0-dev.1 flutter_test: sdk: flutter golden_toolkit: ^0.9.0 mocktail: ^0.1.2 path: ^1.8.0 - pedantic: ^1.11.0 - diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index e5520921..a3364f08 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: stream_chat: ^3.0.0 dev_dependencies: + dart_code_metrics: ^4.2.0-dev.1 fake_async: ^1.2.0 flutter_test: sdk: flutter diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index 552ee5ec..4f8a3ad3 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -17,5 +17,6 @@ dependencies: stream_chat_flutter: ^3.0.0 dev_dependencies: + dart_code_metrics: ^4.2.0-dev.1 flutter_test: sdk: flutter diff --git a/packages/stream_chat_persistence/pubspec.yaml b/packages/stream_chat_persistence/pubspec.yaml index f6409fa2..59cd6f41 100644 --- a/packages/stream_chat_persistence/pubspec.yaml +++ b/packages/stream_chat_persistence/pubspec.yaml @@ -7,6 +7,7 @@ issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: sdk: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" dependencies: flutter: @@ -22,8 +23,8 @@ dependencies: dev_dependencies: build_runner: ^2.0.1 + dart_code_metrics: ^4.2.0-dev.1 flutter_test: sdk: flutter mocktail: ^0.1.1 - moor_generator: ^4.2.1 - pedantic: ^1.11.0 + moor_generator: ^4.2.1 \ No newline at end of file