blob: 16d5826198d5f8abf8aadd9f7d975ea8536a8753 [file] [log] [blame]
#!/bin/bash
set -ev
#
# Generate thrift files so the static code analysis includes an analysis
# of the files the thrift compiler spits out. If running interactively
# set the NOBUILD environment variable to skip the boot/config/make phase.
#
if [[ -z "$NOBUILD" ]]; then
./bootstrap.sh
./configure --enable-tutorial=no
make -j3 precross
fi
#
# C/C++ static code analysis with cppcheck
# add --error-exitcode=1 to --enable=all as soon as everything is fixed
#
# Python code style check with flake8
#
# search for TODO etc within source tree
# some statistics about the code base
# some info about the build machine
# Compiler cppcheck (All)
cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
# C++ cppcheck (All)
cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
# C Glib cppcheck (All)
cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
# Silent error checks
# See THRIFT-4371 : flex generated code triggers "possible null pointer dereference" in yy_init_buffer
cppcheck --force --quiet --inline-suppr --suppress="*:thrift/thriftl.cc" --error-exitcode=1 -j2 compiler/cpp/src
cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
# Python code style
flake8 --ignore=W504,E501 lib/py
flake8 --exclude=tutorial/py/build tutorial/py
# THRIFT-4371 : generated files are excluded because they haven't been scrubbed yet
flake8 --ignore=E501 --exclude="*/gen-py*/*",test/py/build test/py
flake8 test/py.twisted
flake8 test/py.tornado
flake8 --ignore=E501 test/test.py
flake8 --ignore=E501,E722 test/crossrunner
flake8 test/features
# PHP code style
composer install --quiet
./vendor/bin/phpcs
# TODO etc
echo FIXMEs: `grep -r FIXME * | wc -l`
echo HACKs: `grep -r HACK * | wc -l`
echo TODOs: `grep -r TODO * | wc -l`
# LoC
sloccount .
# System Info
dpkg -l
uname -a