fc10364bde
The run_lint script takes 2 params, the first is top of tree, the second is a git change SHA. Only if the change contains changes to sysui does the lint get run (this allows it to not affect other uploads as a preupload hook). Test: ./tools/lint/run_lint.sh $ANDROID_BUILD_TOP <SHA> Change-Id: Id23b879610b3d33c5bf9e47812f0a85f6aeffdde
60 lines
2.1 KiB
Bash
Executable File
60 lines
2.1 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
if [[ $# -ne 2 ]]; then
|
|
echo "Error: Incorrect number of arguments" >&2
|
|
echo "Usage: ./run_lint.sh <repo_root> <CL_SHA>" >&2
|
|
exit 100
|
|
fi
|
|
|
|
git show --name-only --pretty=format: $2 | grep packages/SystemUI/ > /dev/null
|
|
exitcode=$?
|
|
if [[ exitcode -eq 1 ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [[ -z $ANDROID_BUILD_TOP ]]; then
|
|
echo "Error: ANDROID_BUILD_TOP must be set" >&2
|
|
echo "Try setting up your environment first:" >&2
|
|
echo " source build/envsetup.sh && lunch <target>" >&2
|
|
exit 101
|
|
fi
|
|
|
|
# TODO: Run lint as part of the build so we can specify the dependency properly
|
|
systemuijarpath="out/soong/.intermediates/frameworks/base/packages/SystemUI/SystemUI-core/android_common/combined/SystemUI-core.jar"
|
|
if [[ ! -f $ANDROID_BUILD_TOP/$systemuijarpath ]]; then
|
|
echo "Error: Classes.jar file not found" >&2
|
|
echo "Try building that jar file manually:" >&2
|
|
echo " m -j16 out/soong/.intermediates/frameworks/base/packages/SystemUI/SystemUI-core/android_common/combined/SystemUI-core.jar" >&2
|
|
exit 102
|
|
fi
|
|
|
|
REPO_ROOT=$1
|
|
${REPO_ROOT}/prebuilts/devtools/tools/lint \
|
|
. \
|
|
--exitcode \
|
|
-Werror \
|
|
--config ${REPO_ROOT}/frameworks/base/packages/SystemUI/tools/lint/lint.xml \
|
|
--html ${REPO_ROOT}/out/lint_output.html \
|
|
--baseline ${REPO_ROOT}/frameworks/base/packages/SystemUI/tools/lint/baseline.xml \
|
|
--remove-fixed
|
|
exitcode=$?
|
|
if [[ exitcode -eq 1 ]]; then
|
|
cat >&2 <<EOF
|
|
|
|
Please check the HTML results file and fix the errors.
|
|
If the error cannot be fixed immediately, there are 3 possible resolutions:
|
|
1. Use tools:ignore or @SuppressLint annotation. This is preferred
|
|
for cases where the lint violation is intended, so that reviewers
|
|
can review whether the suppression is appropriate.
|
|
2. Use tools/lint.xml to ignore a lint check which we don't care
|
|
about for any file, or checks that are not actionable by the
|
|
CL author (e.g. translation issues)
|
|
3. If there are lint errors that should be fixed, but cannot be done
|
|
immediately for some reason, run ./tools/lint/update_baseline.sh to
|
|
add them to baseline.xml.
|
|
|
|
EOF
|
|
fi
|
|
|
|
exit $exitcode
|