Jason Monk fc10364bde Add scripts to run lint on sysui
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
2018-08-28 14:35:15 -04:00

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