golangci-lint/scripts/bench/bench_local.sh
2024-06-01 16:00:10 +02:00

51 lines
1.1 KiB
Bash
Executable File

#!/bin/bash -e
# Benchmark with a local version
# Usage: ./scripts/bench/bench_local.sh gosec v1.59.0
# ex: gosec
LINTER=$1
# ex: v1.59.0
VERSION=$2
if [ -z "$LINTER" ] || [ -z "$VERSION" ]; then
cat <<-EOF
Missing required arguments!
Usage: $0 <linter> <old version> <new version>
Example: $0 gosec v1.58.1 v1.58.2
EOF
exit 1
fi
## Clean
function cleanBinaries() {
echo "Clean binaries"
rm "./golangci-lint-${VERSION}"
rm ./golangci-lint
}
trap cleanBinaries EXIT
## Download version
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "./temp-${VERSION}" "${VERSION}"
mv "temp-${VERSION}/golangci-lint" "./golangci-lint-${VERSION}"
rm -rf "temp-${VERSION}"
## Build local version
make build
## Run
hyperfine \
--prepare './golangci-lint cache clean' "./golangci-lint run --issues-exit-code 0 --print-issued-lines=false --enable-only ${LINTER}" \
--prepare "./golangci-lint-${VERSION} cache clean" "./golangci-lint-${VERSION} run --issues-exit-code 0 --print-issued-lines=false --enable-only ${LINTER}"