/
scan-build.bbclass
58 lines (48 loc) · 2.21 KB
/
scan-build.bbclass
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
# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
# Released under the MIT license (see COPYING.MIT for the terms)
CFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
CXXFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
#EXTRA_ANALYZER_OPTIONS ?= "-analyze-headers"
CLANG_SCAN_ENABLED ??= "1"
#CLANG_SCAN_SERVER_IP ??= "127.0.0.1"
CLANG_SCAN_SERVER_IP ??= "10.0.0.10"
CLANG_SCAN_PORT ??= "8181"
SCAN_RESULTS_DIR ?= "${TMPDIR}/static-scan/${PN}"
scanbuild_munge_cc_cxx() {
cc="`echo ${CC} | cut -f1 -d " "`"
cxx="`echo ${CXX} | cut -f1 -d " "`"
export CC="${cc}"
export CXX="${cxx}"
}
do_configure[prefuncs] += "scanbuild_munge_cc_cxx"
do_scanbuild() {
cc="`echo ${CC} | cut -f1 -d " "`"
cxx="`echo ${CXX} | cut -f1 -d " "`"
#mk="scan-build --use-cc=${cc} --use-c++=${cxx} --analyzer-target=${HOST_SYS} --html-title="${BP}" -o ${SCAN_RESULTS_DIR} ${EXTRA_ANALYZER_OPTIONS} make"
#export MAKE="${mk}"
export CC="${cc}"
export CXX="${cxx}"
scan-build --use-cc=${cc} --use-c++=${cxx} --analyzer-target=${HOST_SYS} --html-title="${BP}" -o ${SCAN_RESULTS_DIR} ${EXTRA_ANALYZER_OPTIONS} ${MAKE} ${EXTRA_OEMAKE}
}
do_scanview() {
bbplain "================================================================"
bbplain "Stating scan-view server at: http://${CLANG_SCAN_SERVER_IP}:${CLANG_SCAN_PORT}"
bbplain "Use Ctrl-C to exit"
bbplain "================================================================"
scan-view --host ${CLANG_SCAN_SERVER_IP} --port ${CLANG_SCAN_PORT} --allow-all-hosts ${SCAN_RESULTS_DIR}/*/
}
do_scanview[depends] += "${PN}:do_scanbuild"
do_scanbuild[cleandirs] += "${SCAN_RESULTS_DIR}"
do_scanbuild[dirs] += "${B}"
do_scanview[dirs] += "${SCAN_RESULTS_DIR}"
#do_build[recrdeptask] += "do_scanbuild"
do_scanbuild[doc] = "Build and scan static analysis data using clang"
do_scanview[doc] = "Start a webserver to visualize static analysis data"
addtask scanbuild after do_configure before do_compile
addtask scanview
python () {
# Remove scanbuild task when scanning is not enabled
if not(d.getVar('CLANG_SCAN_ENABLED') == "1"):
for i in ['do_scanbuild', 'do_scanview']:
bb.build.deltask(i, d)
}