mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Our supressions for the generated mojom.dart files weren't working after we deleted the mojom package. This CL updates the filters to catch mojom.dart files again.
78 lines
2.7 KiB
Python
Executable File
78 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2014 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import argparse
|
|
import os
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
|
|
SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
SKY_ROOT = os.path.dirname(SKY_TOOLS_DIR)
|
|
SRC_ROOT = os.path.dirname(SKY_ROOT)
|
|
|
|
WORKBENCH = os.path.join(SRC_ROOT, 'sky', 'packages', 'workbench')
|
|
DART_SDK = os.path.join(SRC_ROOT, 'third_party', 'dart-sdk', 'dart-sdk', 'bin')
|
|
DARTANALYZER = os.path.join(DART_SDK, 'dartanalyzer')
|
|
|
|
_IGNORED_PATTERNS = [
|
|
# Ignored because they're not indicative of specific errors.
|
|
re.compile(r'^$'),
|
|
re.compile(r'^Analyzing \['),
|
|
re.compile(r'^No issues found'),
|
|
re.compile(r'^[0-9]+ errors? and [0-9]+ warnings? found.'),
|
|
re.compile(r'^([0-9]+|No) (error|warning|issue)s? found.'),
|
|
|
|
# Ignore analyzer status output.
|
|
re.compile(r'^[0-9]+ errors(, [0-9]+ warnings)? and [0-9]+ hints found.'),
|
|
|
|
# Ignored because they don't affect Sky code
|
|
re.compile(r'\[hint\] When compiled to JS, this test might return true when the left hand side is an int'),
|
|
|
|
# TODO: Remove once sdk-extensions are in place
|
|
re.compile(r'^\[error\] Native functions can only be declared in'),
|
|
|
|
# TODO: Fix all the warnings in the mojo packages
|
|
re.compile(r'.*dart-pub-cache.*\.mojom\.dart'),
|
|
re.compile(r'.*dart-pub-cache.*/mojo-'),
|
|
re.compile(r'.*/mojo/public/dart/'),
|
|
|
|
# TODO: Remove this once Sky no longer generates this warning.
|
|
# dartbug.com/22836
|
|
re.compile(r'.*cannot both be unnamed'),
|
|
|
|
# TODO: Remove this once Sky no longer generates this warning.
|
|
# dartbug.com/23606
|
|
re.compile(r'^\[warning] Missing concrete implementation of \'RenderObject.toString\''),
|
|
]
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Sky Analyzer')
|
|
parser.add_argument('--congratulate', action="store_true")
|
|
parser.add_argument('app_path', type=str)
|
|
args = parser.parse_args()
|
|
|
|
try:
|
|
subprocess.check_output([
|
|
DARTANALYZER, "--package-warnings", args.app_path,
|
|
"--package-root", os.path.join(WORKBENCH, "packages"),
|
|
"--fatal-warnings"
|
|
], stderr=subprocess.STDOUT, cwd=WORKBENCH)
|
|
except subprocess.CalledProcessError as e:
|
|
errors = [l for l in e.output.split('\n')
|
|
if not any(p.match(l) for p in _IGNORED_PATTERNS)]
|
|
if len(errors) > 0:
|
|
for error in errors:
|
|
print >> sys.stderr, error
|
|
# Propagate analyzer error code.
|
|
return e.returncode
|
|
# If we do not have any errors left after filtering, return 0.
|
|
if args.congratulate:
|
|
print >> sys.stdout, "No analyzer warnings!"
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|