diff --git a/.cirrus.yml b/.cirrus.yml index 7df1c8e283..a2c84ecfcb 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 diff --git a/packages/flutter_lints/CHANGELOG.md b/packages/flutter_lints/CHANGELOG.md index 32f490b5fe..999b81d030 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 0000000000..0f67ce6e6e --- /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 0000000000..61b6c4de17 --- /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 0000000000..ca062f2005 --- /dev/null +++ b/packages/flutter_lints/example/lib/main.dart @@ -0,0 +1,33 @@ +// 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`. + +// 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'; + + // The following syntax deactivates a lint on a per-line bases: + print('$partOne $partTwo'); // 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) => bar; + + @override + String methodB(String bar) => bar; +} diff --git a/packages/flutter_lints/example/pubspec.yaml b/packages/flutter_lints/example/pubspec.yaml new file mode 100644 index 0000000000..0177756e95 --- /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. + +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 1e6a8abb57..6623a4509b 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: diff --git a/packages/flutter_lints/run_tests.sh b/packages/flutter_lints/run_tests.sh index 63369d6c4a..b410603bdc 100755 --- a/packages/flutter_lints/run_tests.sh +++ b/packages/flutter_lints/run_tests.sh @@ -3,7 +3,8 @@ # 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` +# Dart sources are only allowed in the example directory. +filecount=`find . -name '*.dart' ! -path './example/*' | wc -l` if [ $filecount -ne 0 ] then echo 'Dart sources are not allowed in this package:'