From f3dfde600bdac9ef8dc669ae5a034716a797a5d6 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 13 Jul 2021 12:24:16 -0700 Subject: [PATCH 1/5] refactor and simplify CI dart analysis --- analysis_options.yaml | 8 +-- ci/analyze.sh | 134 +++++++++-------------------------- lib/ui/analysis_options.yaml | 6 ++ 3 files changed, 41 insertions(+), 107 deletions(-) create mode 100644 lib/ui/analysis_options.yaml diff --git a/analysis_options.yaml b/analysis_options.yaml index 66f5b5ca69a36..13adc0083294f 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -14,13 +14,9 @@ # - "public_member_api_docs" enabled. analyzer: - exclude: [ - # this test pretends to be part of dart:ui and results in lots of false - # positives. - testing/dart/window_hooks_integration_test.dart, + exclude: # Fixture depends on dart:ui and raises false positives. - flutter_frontend_server/test/fixtures/lib/main.dart - ] + - flutter_frontend_server/test/fixtures/lib/main.dart strong-mode: implicit-casts: false implicit-dynamic: false diff --git a/ci/analyze.sh b/ci/analyze.sh index abd8d9619e7c3..b264690879c37 100755 --- a/ci/analyze.sh +++ b/ci/analyze.sh @@ -33,108 +33,40 @@ FLUTTER_DIR="$SRC_DIR/flutter" DART_BIN="$SRC_DIR/third_party/dart/tools/sdks/dart-sdk/bin" PUB="$DART_BIN/pub" DART="$DART_BIN/dart" -DART_ANALYZER="$DART_BIN/dartanalyzer" - -echo "Using analyzer from $DART_ANALYZER" - -"$DART_ANALYZER" --version - -function analyze() ( - local last_arg="${!#}" - local results - # Grep sets its return status to non-zero if it doesn't find what it's - # looking for. - set +e - results="$("$DART_ANALYZER" "$@" 2>&1 | - grep -Ev "No issues found!" | - grep -Ev "Analyzing.+$last_arg")" - set -e - echo "$results" - if [ -n "$results" ]; then - echo "Failed analysis of $last_arg" - return 1 - else - echo "Success: no issues found in $last_arg" - fi - return 0 -) -echo "Analyzing dart:ui library..." -analyze \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$SRC_DIR/out/host_debug_unopt/gen/sky/bindings/dart_ui/ui.dart" - -echo "Analyzing spirv library..." -analyze \ - --packages="$FLUTTER_DIR/lib/spirv/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/lib/spirv" - -echo "Analyzing ci/" -analyze \ - --packages="$FLUTTER_DIR/ci/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/ci" - -echo "Analyzing flutter_frontend_server..." -analyze \ - --packages="$FLUTTER_DIR/flutter_frontend_server/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/flutter_frontend_server" - -echo "Analyzing tools/licenses..." -analyze \ - --packages="$FLUTTER_DIR/tools/licenses/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/tools/licenses/analysis_options.yaml" \ - "$FLUTTER_DIR/tools/licenses" - -echo "Analyzing testing/litetest" -analyze \ - --packages="$FLUTTER_DIR/testing/litetest/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/litetest" - -echo "Analyzing testing/benchmark" -analyze \ - --packages="$FLUTTER_DIR/testing/benchmark/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/benchmark" - -echo "Analyzing testing/smoke_test_failure" -analyze \ - --packages="$FLUTTER_DIR/testing/smoke_test_failure/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/smoke_test_failure" - -echo "Analyzing testing/dart..." -analyze \ - --packages="$FLUTTER_DIR/testing/dart/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/dart" - -echo "Analyzing testing/scenario_app..." -analyze \ - --packages="$FLUTTER_DIR/testing/scenario_app/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/scenario_app" - -echo "Analyzing testing/symbols..." -analyze \ - --packages="$FLUTTER_DIR/testing/symbols/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/testing/symbols" - -echo "Analyzing githooks..." -analyze \ - --packages="$FLUTTER_DIR/tools/githooks/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/tools/githooks" - -echo "Analyzing tools/clang_tidy" -analyze \ - --packages="$FLUTTER_DIR/tools/clang_tidy/.dart_tool/package_config.json" \ - --options "$FLUTTER_DIR/analysis_options.yaml" \ - "$FLUTTER_DIR/tools/clang_tidy" +echo "Using dart from $DART_BIN" +"$DART" --version +echo "" + +dart analyze "$FLUTTER_DIR/lib/ui" + +dart analyze "$FLUTTER_DIR/lib/web_ui" + +dart analyze "$FLUTTER_DIR/lib/spirv" + +dart analyze "$FLUTTER_DIR/ci" + +dart analyze "$FLUTTER_DIR/flutter_frontend_server" + +dart analyze "$FLUTTER_DIR/tools/licenses" + +dart analyze "$FLUTTER_DIR/testing/litetest" + +dart analyze "$FLUTTER_DIR/testing/benchmark" + +dart analyze "$FLUTTER_DIR/testing/smoke_test_failure" + +dart analyze "$FLUTTER_DIR/testing/dart" + +dart analyze "$FLUTTER_DIR/testing/scenario_app" + +dart analyze "$FLUTTER_DIR/testing/symbols" + +dart analyze "$FLUTTER_DIR/tools/githooks" + +dart analyze "$FLUTTER_DIR/tools/clang_tidy" + +echo "" # Check that dart libraries conform. echo "Checking web_ui api conformance..." diff --git a/lib/ui/analysis_options.yaml b/lib/ui/analysis_options.yaml new file mode 100644 index 0000000000000..df714af989148 --- /dev/null +++ b/lib/ui/analysis_options.yaml @@ -0,0 +1,6 @@ +include: ../../analysis_options.yaml + +analyzer: + exclude: + # fixtures/ depends on dart:ui and raises false positives. + - fixtures/** From 0ecd3aaafb0bb9806b3cfce2df1be2ddf9f2c4d2 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 13 Jul 2021 13:12:53 -0700 Subject: [PATCH 2/5] run pub get for web dart:ui --- ci/analyze.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/analyze.sh b/ci/analyze.sh index b264690879c37..14d137be93a48 100755 --- a/ci/analyze.sh +++ b/ci/analyze.sh @@ -38,8 +38,11 @@ echo "Using dart from $DART_BIN" "$DART" --version echo "" +# Analyze dart:ui. dart analyze "$FLUTTER_DIR/lib/ui" +# Analyze Flutter web's dart:ui. +dart pub get "$FLUTTER_DIR/lib/web_ui" dart analyze "$FLUTTER_DIR/lib/web_ui" dart analyze "$FLUTTER_DIR/lib/spirv" From 6e13c7748e2bf7327f5382a8e3f681c87d358208 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 13 Jul 2021 13:58:10 -0700 Subject: [PATCH 3/5] fix the pub get command --- ci/analyze.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/analyze.sh b/ci/analyze.sh index 14d137be93a48..a327b81c18f80 100755 --- a/ci/analyze.sh +++ b/ci/analyze.sh @@ -42,7 +42,7 @@ echo "" dart analyze "$FLUTTER_DIR/lib/ui" # Analyze Flutter web's dart:ui. -dart pub get "$FLUTTER_DIR/lib/web_ui" +(cd "$FLUTTER_DIR/lib/web_ui"; dart pub get) dart analyze "$FLUTTER_DIR/lib/web_ui" dart analyze "$FLUTTER_DIR/lib/spirv" From 84b82e6a5ee3da157093b49e67f74ff9f5bdfe9d Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 13 Jul 2021 14:17:15 -0700 Subject: [PATCH 4/5] remove a deprecated pubspec field --- flutter_frontend_server/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/flutter_frontend_server/pubspec.yaml b/flutter_frontend_server/pubspec.yaml index a6c2772c0f574..a5de8a6279348 100644 --- a/flutter_frontend_server/pubspec.yaml +++ b/flutter_frontend_server/pubspec.yaml @@ -7,7 +7,6 @@ publish_to: none version: 0.1.1-dev description: Communication pipe to Dart Frontend homepage: https://flutter.dev -author: Flutter Authors # Do not add any dependencies that require more than what is provided in # //third_party/pkg, //third_party/dart/pkg or From 7829fa7211a2ec570350ba80e1c14b6a91a90ac1 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 13 Jul 2021 16:05:34 -0700 Subject: [PATCH 5/5] review comments --- ci/analyze.sh | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/ci/analyze.sh b/ci/analyze.sh index a327b81c18f80..e51dc46f9bd15 100755 --- a/ci/analyze.sh +++ b/ci/analyze.sh @@ -38,40 +38,35 @@ echo "Using dart from $DART_BIN" "$DART" --version echo "" -# Analyze dart:ui. -dart analyze "$FLUTTER_DIR/lib/ui" +"$DART" analyze "$FLUTTER_DIR/lib/ui" -# Analyze Flutter web's dart:ui. -(cd "$FLUTTER_DIR/lib/web_ui"; dart pub get) -dart analyze "$FLUTTER_DIR/lib/web_ui" +"$DART" analyze "$FLUTTER_DIR/lib/spirv" -dart analyze "$FLUTTER_DIR/lib/spirv" +"$DART" analyze "$FLUTTER_DIR/ci" -dart analyze "$FLUTTER_DIR/ci" +"$DART" analyze "$FLUTTER_DIR/flutter_frontend_server" -dart analyze "$FLUTTER_DIR/flutter_frontend_server" +"$DART" analyze "$FLUTTER_DIR/tools/licenses" -dart analyze "$FLUTTER_DIR/tools/licenses" +"$DART" analyze "$FLUTTER_DIR/testing/litetest" -dart analyze "$FLUTTER_DIR/testing/litetest" +"$DART" analyze "$FLUTTER_DIR/testing/benchmark" -dart analyze "$FLUTTER_DIR/testing/benchmark" +"$DART" analyze "$FLUTTER_DIR/testing/smoke_test_failure" -dart analyze "$FLUTTER_DIR/testing/smoke_test_failure" +"$DART" analyze "$FLUTTER_DIR/testing/dart" -dart analyze "$FLUTTER_DIR/testing/dart" +"$DART" analyze "$FLUTTER_DIR/testing/scenario_app" -dart analyze "$FLUTTER_DIR/testing/scenario_app" +"$DART" analyze "$FLUTTER_DIR/testing/symbols" -dart analyze "$FLUTTER_DIR/testing/symbols" +"$DART" analyze "$FLUTTER_DIR/tools/githooks" -dart analyze "$FLUTTER_DIR/tools/githooks" - -dart analyze "$FLUTTER_DIR/tools/clang_tidy" +"$DART" analyze "$FLUTTER_DIR/tools/clang_tidy" echo "" # Check that dart libraries conform. echo "Checking web_ui api conformance..." -(cd "$FLUTTER_DIR/web_sdk"; "$PUB" get) +(cd "$FLUTTER_DIR/web_sdk"; "$DART" pub get) (cd "$FLUTTER_DIR"; "$DART" "web_sdk/test/api_conform_test.dart")