Improve task_lint.sh robustness (#2711)

* [SCRIPT] Refactor grep for multiple patterns

Tidy up the use of grep.  Use -E rather than run multiple grep
instances.

* [SCRIPT] Refactor grep use in pipeline.

Prefer to use stdin redirection rather than create a pipeline.

* [SCRIPT] Refactor placement and cleanup of temporary files.

Place temporary files in the conventional /tmp location. Avoid
poisoning file name space by using $$. Ensure the temporary files get
cleaned up, even when the script fails / exits early.

* [SCRIPT] Improve robustness of task_lint.sh error handling.

Ensure script failures are caught and propagated.  Rather than trying
to explicitly catch and propagate failures with explicit "|| exit"
annotations, use the "set -e" idom from docker/install scripts and
have the shell catch and propagate errors in the general case and
special case the grep instances where non zero exit is permitted and
should be ignored.
This commit is contained in:
Marcus Shawcroft 2019-03-01 18:09:35 +00:00 коммит произвёл Tianqi Chen
Родитель 236d7ef064
Коммит 3e02c97140
1 изменённых файлов: 19 добавлений и 10 удалений

Просмотреть файл

@ -1,17 +1,26 @@
#!/bin/bash
set -e
set -u
set -o pipefail
cleanup()
{
rm -rf /tmp/$$.*
}
trap cleanup 0
echo "Check codestyle of c++ code..."
make cpplint || exit -1
make cpplint
echo "Check codestyle of python code..."
make pylint || exit -1
make pylint
echo "Check codestyle of jni code..."
make jnilint || exit -1
make jnilint
echo "Check documentations of c++ code..."
make doc 2>log.txt
(cat log.txt| grep -v ENABLE_PREPROCESSING |grep -v "unsupported tag") > logclean.txt
make doc 2>/tmp/$$.log.txt
grep -v -E "ENABLE_PREPROCESSING|unsupported tag" < /tmp/$$.log.txt > /tmp/$$.logclean.txt || true
echo "---------Error Log----------"
cat logclean.txt
cat /tmp/$$.logclean.txt
echo "----------------------------"
(cat logclean.txt|grep warning) && exit -1
(cat logclean.txt|grep error) && exit -1
rm logclean.txt
rm log.txt
grep -E "warning|error" < /tmp/$$.logclean.txt || true