paddle_lite_coverage.sh 4.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
et -xe

PADDLE_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}")/../../" && pwd )"

# install lcov
curl -o /lcov-1.14.tar.gz -s https://paddle-ci.gz.bcebos.com/coverage%2Flcov-1.14.tar.gz
tar -xf /lcov-1.14.tar.gz -C /
cd /lcov-1.14
make install

# run paddle coverage
cd /Paddle-Lite/build

python ${PADDLE_ROOT}/tools/coverage/gcda_clean.py ${GIT_PR_ID}

lcov --capture -d ./ -o coverage.info --rc lcov_branch_coverage=0

# full html report
function gen_full_html_report() {
    lcov --extract coverage.info \
        '/Paddle-Lite/lite/api/*' \
        '/Paddle-Lite/lite/backends/*' \
        '/Paddle-Lite/lite/core/*' \
        '/Paddle-Lite/lite/fluid/*' \
        '/Paddle-Lite/lite/gen_code/*' \
        '/Paddle-Lite/lite/kernels/*' \
        '/Paddle-Lite/lite/model_parser/*' \
        '/Paddle-Lite/lite/opreators/*' \
        '/Paddle-Lite/lite/tests/*' \
        '/Paddle-Lite/lite/tools/*' \
        '/Paddle-Lite/lite/utils/*' \
        -o coverage-full.tmp \
        --rc lcov_branch_coverage=0

    mv -f coverage-full.tmp coverage-full.info

    lcov --remove coverage-full.info \
        '/Paddle-Lite/lite/demo*' \
        -o coverage-full.tmp \
        --rc lcov_branch_coverage=0

    mv -f coverage-full.tmp coverage-full.info
}

gen_full_html_report || true

# diff html report
function gen_diff_html_report() {
    if [ "${GIT_PR_ID}" != "" ]; then
        COVERAGE_DIFF_PATTERN="`python ${PADDLE_ROOT}/tools/coverage/pull_request.py files ${GIT_PR_ID}`"

        python ${PADDLE_ROOT}/tools/coverage/pull_request.py diff ${GIT_PR_ID} > git-diff.out
    fi

    lcov --extract coverage-full.info \
        ${COVERAGE_DIFF_PATTERN} \
        -o coverage-diff.info \
        --rc lcov_branch_coverage=0
    
    python ${PADDLE_ROOT}/tools/coverage/coverage_diff.py coverage-diff.info git-diff.out > coverage-diff.tmp

    mv -f coverage-diff.tmp coverage-diff.info

    genhtml -o coverage-diff -t 'Diff Coverage' --no-function-coverage --no-branch-coverage coverage-diff.info
}

gen_diff_html_report || true

## python coverage
#export COVERAGE_FILE=/Paddle-Lite/build/python-coverage.data
#
#set +x
#coverage combine `ls python-coverage.data.*`
#set -x
#
#coverage xml -i -o python-coverage.xml
#
#python ${PADDLE_ROOT}/tools/coverage/python_coverage.py > python-coverage.info
#
## python full html report
##
#function gen_python_full_html_report() {
#    lcov --extract python-coverage.info \
#        '/Paddle-Lite/python/*' \
#        -o python-coverage-full.tmp \
#        --rc lcov_branch_coverage=0
#
#    mv -f python-coverage-full.tmp python-coverage-full.info
#
#    lcov --remove python-coverage-full.info \
#        '/*/tests/*' \
#        -o python-coverage-full.tmp \
#        --rc lcov_branch_coverage=0
#
#    mv -f python-coverage-full.tmp python-coverage-full.info
#}
#
#gen_python_full_html_report || true
#
## python diff html report
#function gen_python_diff_html_report() {
#    if [ "${GIT_PR_ID}" != "" ]; then
#        COVERAGE_DIFF_PATTERN="`python ${PADDLE_ROOT}/tools/coverage/pull_request.py files ${GIT_PR_ID}`"
#
#        python ${PADDLE_ROOT}/tools/coverage/pull_request.py diff ${GIT_PR_ID} > python-git-diff.out
#    fi
#
#    lcov --extract python-coverage-full.info \
#        ${COVERAGE_DIFF_PATTERN} \
#        -o python-coverage-diff.info \
#        --rc lcov_branch_coverage=0
#
#    python ${PADDLE_ROOT}/tools/coverage/coverage_diff.py python-coverage-diff.info python-git-diff.out > python-coverage-diff.tmp
#
#    mv -f python-coverage-diff.tmp python-coverage-diff.info
#
#    genhtml -o python-coverage-diff \
#        -t 'Python Diff Coverage' \
#        --no-function-coverage \
#        --no-branch-coverage \
#        --ignore-errors source \
#        python-coverage-diff.info
#}
#
#gen_python_diff_html_report || true

# assert coverage lines
echo "Assert Diff Coverage"
python ${PADDLE_ROOT}/tools/coverage/coverage_lines.py coverage-diff.info 0.9 || COVERAGE_LINES_ASSERT=1

#echo "Assert Python Diff Coverage"
#python ${PADDLE_ROOT}/tools/coverage/coverage_lines.py python-coverage-diff.info 0.9 || PYTHON_COVERAGE_LINES_ASSERT=1

#if [ "$COVERAGE_LINES_ASSERT" = "1" ] || [ "$PYTHON_COVERAGE_LINES_ASSERT" = "1" ]; then
if [ "$COVERAGE_LINES_ASSERT" = "1" ]; then
    exit 9
fi