diff options
Diffstat (limited to 'bin/gradle-report')
| -rwxr-xr-x | bin/gradle-report | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/bin/gradle-report b/bin/gradle-report index c59945a..bbee2b7 100755 --- a/bin/gradle-report +++ b/bin/gradle-report @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# gradle-report <project-dir> <detekt|lint> -- [gradle args] +# gradle-report <project-dir> <detekt|lint> [--allow-stale] [-- <gradle args>] # # Runs a static-analysis task and reports from its XML report, refusing to speak if the report # is older than the run. @@ -18,6 +18,8 @@ die() { echo "gradle-report: $1" >&2; exit 2; } PROJECT_DIR=$(cd "$1" 2>/dev/null && pwd) || die "no such project directory: $1" KIND="$2" shift 2 +ALLOW_STALE=0 +if [ "${1:-}" = "--allow-stale" ]; then ALLOW_STALE=1; shift; fi [ "${1:-}" = "--" ] && shift EXTRA=("$@") @@ -62,8 +64,15 @@ if [ ! -f "$REPORT" ]; then exit $STATUS fi -if [ "$REPORT" -ot "$MARKER" ]; then +if [ "$REPORT" -ot "$MARKER" ] && [ $ALLOW_STALE -eq 0 ]; then echo "report : STALE — $REPORT predates this run" + if grep -qE "Task :app:(detekt|lintDebug) UP-TO-DATE" "$LOG"; then + echo "hint : Gradle treated $TASK as UP-TO-DATE, so nothing was re-analysed and the" + echo " report on disk describes an earlier state of the code." + echo " Re-run with: -- --rerun-tasks (or --allow-stale to accept it)" + else + echo "hint : the task ran but produced no new report. Re-run with: -- --rerun-tasks" + fi echo "result : FAIL — refusing to report numbers that describe older code" rm -f "$LOG" exit 1 @@ -96,7 +105,11 @@ for r in rows: PY ) -echo "report : fresh" +if [ "$REPORT" -ot "$MARKER" ]; then + echo "report : STALE (accepted via --allow-stale)" +else + echo "report : fresh" +fi echo "$FINDINGS" | head -1 | sed 's/^COUNT /findings: /' echo "$FINDINGS" | tail -n +2 |
