From b52aac79a86a7d95c9be37f686467472681cb2e9 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 10:58:09 -0700 Subject: [PATCH 1/8] Add example to flutter_lints package --- packages/flutter_lints/CHANGELOG.md | 4 +++ packages/flutter_lints/example/README.md | 16 ++++++++++ .../example/analysis_options.yaml | 29 +++++++++++++++++ packages/flutter_lints/example/lib/main.dart | 32 +++++++++++++++++++ packages/flutter_lints/example/pubspec.yaml | 13 ++++++++ packages/flutter_lints/pubspec.yaml | 2 +- 6 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 packages/flutter_lints/example/README.md create mode 100644 packages/flutter_lints/example/analysis_options.yaml create mode 100644 packages/flutter_lints/example/lib/main.dart create mode 100644 packages/flutter_lints/example/pubspec.yaml diff --git a/packages/flutter_lints/CHANGELOG.md b/packages/flutter_lints/CHANGELOG.md index 32f490b5fe5..999b81d0304 100644 --- a/packages/flutter_lints/CHANGELOG.md +++ b/packages/flutter_lints/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.1 + +* Added an example project + ## 1.0.0 * Initial release diff --git a/packages/flutter_lints/example/README.md b/packages/flutter_lints/example/README.md new file mode 100644 index 00000000000..2ae19dee8ee --- /dev/null +++ b/packages/flutter_lints/example/README.md @@ -0,0 +1,16 @@ +An example project that showcases how to enable the lint set from +`package:flutter_lints`, which contains recommended lints for Flutter apps, +packages, and plugins. + +The `flutter_lints` packages is listed as a dev_dependency in the `pubspec.yaml` +file. + +The lint set provided by the package is activated in the `analysis_options.yaml` +file. The lints enforced for this project can be further customized in that +file. + +The dart code in this project (e.g. `lib/main.dart`) is analyzed using the +lint configuration provided by `package:flutter_lints`. + +The issues identified by the analyzer are surfaced in IDEs with Dart support or +by invoking `flutter analyze` from the command line. diff --git a/packages/flutter_lints/example/analysis_options.yaml b/packages/flutter_lints/example/analysis_options.yaml new file mode 100644 index 00000000000..61b6c4de17c --- /dev/null +++ b/packages/flutter_lints/example/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/flutter_lints/example/lib/main.dart b/packages/flutter_lints/example/lib/main.dart new file mode 100644 index 00000000000..e09895a91c8 --- /dev/null +++ b/packages/flutter_lints/example/lib/main.dart @@ -0,0 +1,32 @@ +// The code in this file (and all other dart files in the package) is +// analyzed using the rules activated in `analysis_options.yaml`. + +// With the following syntax lint rules are deactiveted for the entire file: +// ignore_for_file: avoid_renaming_method_parameters + +void main() { + const int opA = 1; + const int opB = 2; + // With the following syntax lint rules are deactivated on a per-line basis: + print(opA + opB); // ignore: avoid_print +} + +abstract class Base { + int methodA(int foo); + String methodB(String foo); +} + +// Normally, the parameter renaming from `foo` to `bar` in this class would +// trigger the avoid_renaming_method_parameters` lint, but it has been +// deactivated for the file with the `ignore_for_file` comment above. +class Sub extends Base { + @override + int methodA(int bar) { + return bar; + } + + @override + String methodB(String bar) { + return bar; + } +} diff --git a/packages/flutter_lints/example/pubspec.yaml b/packages/flutter_lints/example/pubspec.yaml new file mode 100644 index 00000000000..9fdb525e21a --- /dev/null +++ b/packages/flutter_lints/example/pubspec.yaml @@ -0,0 +1,13 @@ +name: example +description: A project that showcases how to enable the recommended lints for Flutter apps, packages, and plugins. +version: 0.0.0 +publish_to: none + +environment: + sdk: '>=2.12.0 <3.0.0' + +# Add the latest version of `package:flutter_lints` as a dev_dependency. The +# lint set provided by this package is activated in the `analysis_options.yaml` +# file located next to this `pubspec.yaml` file. +dev_dependencies: + flutter_lints: ^1.0.0 # Check https://pub.dev/packages/flutter_lints for latest version number. diff --git a/packages/flutter_lints/pubspec.yaml b/packages/flutter_lints/pubspec.yaml index 1e6a8abb570..6623a4509ba 100644 --- a/packages/flutter_lints/pubspec.yaml +++ b/packages/flutter_lints/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_lints description: Recommended lints for Flutter apps, packages, and plugins to encourage good coding practices. -version: 1.0.0 +version: 1.0.1 homepage: https://github.com/flutter/packages/tree/master/packages/flutter_lints environment: From 331c25fc26543101c1977f3db0862324d5adf1ed Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:02:36 -0700 Subject: [PATCH 2/8] ++ --- packages/flutter_lints/example/lib/main.dart | 17 +++++++---------- packages/flutter_lints/example/pubspec.yaml | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/flutter_lints/example/lib/main.dart b/packages/flutter_lints/example/lib/main.dart index e09895a91c8..9ce319e3881 100644 --- a/packages/flutter_lints/example/lib/main.dart +++ b/packages/flutter_lints/example/lib/main.dart @@ -5,10 +5,11 @@ // ignore_for_file: avoid_renaming_method_parameters void main() { - const int opA = 1; - const int opB = 2; + const String partOne = 'Hello'; + const String partTwo = 'World'; + // With the following syntax lint rules are deactivated on a per-line basis: - print(opA + opB); // ignore: avoid_print + print('$partOne $partTwo'); // ignore: avoid_print } abstract class Base { @@ -17,16 +18,12 @@ abstract class Base { } // Normally, the parameter renaming from `foo` to `bar` in this class would -// trigger the avoid_renaming_method_parameters` lint, but it has been +// trigger the `avoid_renaming_method_parameters` lint, but it has been // deactivated for the file with the `ignore_for_file` comment above. class Sub extends Base { @override - int methodA(int bar) { - return bar; - } + int methodA(int bar) => bar; @override - String methodB(String bar) { - return bar; - } + String methodB(String bar) => bar; } diff --git a/packages/flutter_lints/example/pubspec.yaml b/packages/flutter_lints/example/pubspec.yaml index 9fdb525e21a..0177756e955 100644 --- a/packages/flutter_lints/example/pubspec.yaml +++ b/packages/flutter_lints/example/pubspec.yaml @@ -1,6 +1,6 @@ name: example description: A project that showcases how to enable the recommended lints for Flutter apps, packages, and plugins. -version: 0.0.0 + publish_to: none environment: From c74c4ce1692b9ab0ccfe1691b46afe1066671f92 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:06:07 -0700 Subject: [PATCH 3/8] typo --- packages/flutter_lints/example/lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_lints/example/lib/main.dart b/packages/flutter_lints/example/lib/main.dart index 9ce319e3881..a858bd56f12 100644 --- a/packages/flutter_lints/example/lib/main.dart +++ b/packages/flutter_lints/example/lib/main.dart @@ -1,7 +1,7 @@ // The code in this file (and all other dart files in the package) is // analyzed using the rules activated in `analysis_options.yaml`. -// With the following syntax lint rules are deactiveted for the entire file: +// With the following syntax lint rules are deactivated for the entire file: // ignore_for_file: avoid_renaming_method_parameters void main() { From 0208f3532a2aef88be77b263e93441fae90c4d21 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:14:35 -0700 Subject: [PATCH 4/8] make checks happy --- packages/flutter_lints/example/lib/main.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/flutter_lints/example/lib/main.dart b/packages/flutter_lints/example/lib/main.dart index a858bd56f12..ca062f20056 100644 --- a/packages/flutter_lints/example/lib/main.dart +++ b/packages/flutter_lints/example/lib/main.dart @@ -1,14 +1,18 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + // The code in this file (and all other dart files in the package) is // analyzed using the rules activated in `analysis_options.yaml`. -// With the following syntax lint rules are deactivated for the entire file: +// The following syntax deactivates a lint for the entire file: // ignore_for_file: avoid_renaming_method_parameters void main() { const String partOne = 'Hello'; const String partTwo = 'World'; - // With the following syntax lint rules are deactivated on a per-line basis: + // The following syntax deactivates a lint on a per-line bases: print('$partOne $partTwo'); // ignore: avoid_print } From 04a7d7497827fa842ca6db13cb5f9d44da6b2a58 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:24:06 -0700 Subject: [PATCH 5/8] adjust check --- packages/flutter_lints/run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_lints/run_tests.sh b/packages/flutter_lints/run_tests.sh index 63369d6c4af..dc3c95d6222 100755 --- a/packages/flutter_lints/run_tests.sh +++ b/packages/flutter_lints/run_tests.sh @@ -3,7 +3,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -filecount=`find . -name '*.dart' | wc -l` +filecount=`find . -name '*.dart' ! -path './example/*' | wc -l` if [ $filecount -ne 0 ] then echo 'Dart sources are not allowed in this package:' From f15f40b63fbe6c733443213c32f6147d4d26bc3a Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:25:10 -0700 Subject: [PATCH 6/8] ++ --- packages/flutter_lints/run_tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/flutter_lints/run_tests.sh b/packages/flutter_lints/run_tests.sh index dc3c95d6222..b410603bdcb 100755 --- a/packages/flutter_lints/run_tests.sh +++ b/packages/flutter_lints/run_tests.sh @@ -3,6 +3,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# Dart sources are only allowed in the example directory. filecount=`find . -name '*.dart' ! -path './example/*' | wc -l` if [ $filecount -ne 0 ] then From a3f4f6c0a5c0c8730bb7050dd83153c14afb0ffc Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:28:37 -0700 Subject: [PATCH 7/8] allow custom analysis --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index d284ee02b69..509e5c4d46c 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -32,7 +32,7 @@ task: - name: format+analyze format_script: ./script/tool_runner.sh format --fail-on-change --clang-format=clang-format-5.0 license_script: pub global run flutter_plugin_tools license-check - analyze_script: ./script/tool_runner.sh analyze --custom-analysis=web_benchmarks/testing/test_app + analyze_script: ./script/tool_runner.sh analyze --custom-analysis=web_benchmarks/testing/test_app,flutter_lints/example - name: publishable version_script: ./script/tool_runner.sh version-check publishable_script: ./script/tool_runner.sh publish-check From 0ce9655729608eefba17091e85877f434de23a11 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Thu, 13 May 2021 11:36:09 -0700 Subject: [PATCH 8/8] review --- packages/flutter_lints/example/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_lints/example/README.md b/packages/flutter_lints/example/README.md index 2ae19dee8ee..0f67ce6e6e7 100644 --- a/packages/flutter_lints/example/README.md +++ b/packages/flutter_lints/example/README.md @@ -9,7 +9,7 @@ The lint set provided by the package is activated in the `analysis_options.yaml` file. The lints enforced for this project can be further customized in that file. -The dart code in this project (e.g. `lib/main.dart`) is analyzed using the +The Dart code in this project (e.g. `lib/main.dart`) is analyzed using the lint configuration provided by `package:flutter_lints`. The issues identified by the analyzer are surfaced in IDEs with Dart support or