mirror of
https://github.com/securego/gosec.git
synced 2024-12-25 20:15:54 +00:00
45 lines
1 KiB
Bash
45 lines
1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
BIN="gosec"
|
||
|
BUILD_DIR="/tmp/securego"
|
||
|
|
||
|
# Scan the current folder and measure the duration.
|
||
|
function scan() {
|
||
|
local scan_cmd=$1
|
||
|
s=$(date +%s%3N)
|
||
|
$scan_cmd -quiet ./...
|
||
|
e=$(date +%s%3N)
|
||
|
res=$(expr $e - $s)
|
||
|
echo $res
|
||
|
}
|
||
|
|
||
|
# Build the master reference version.
|
||
|
mkdir -p ${BUILD_DIR}
|
||
|
git clone --quiet https://github.com/securego/gosec.git ${BUILD_DIR} >/dev/null
|
||
|
make -C ${BUILD_DIR} >/dev/null
|
||
|
|
||
|
# Scan once with the main reference.
|
||
|
duration_master=$(scan "${BUILD_DIR}/${BIN}")
|
||
|
echo "gosec reference time: ${duration_master}ms"
|
||
|
|
||
|
# Build the current version.
|
||
|
make -C . >/dev/null
|
||
|
|
||
|
# Scan once with the current version.
|
||
|
duration=$(scan "./${BIN}")
|
||
|
echo "gosec time: ${duration}ms"
|
||
|
|
||
|
# Compute the difference of the execution time.
|
||
|
diff=$(($duration - $duration_master))
|
||
|
if [[ diff -lt 0 ]]; then
|
||
|
diff=$(($diff * -1))
|
||
|
fi
|
||
|
echo "diff: ${diff}ms"
|
||
|
perf=$((100 - ($duration * 100) / $duration_master))
|
||
|
echo "perf diff: ${perf}%"
|
||
|
|
||
|
# Fail the build if there is a performance degradation of more than 10%.
|
||
|
if [[ $perf -lt -10 ]]; then
|
||
|
exit 1
|
||
|
fi
|