首先环境使用的是Ubuntu16.04发行版
其自带的python版本为3.5,gcc版本为5
CodeChecker需要python版本>=3.6
因此如果需要gcc降级,那么务必在安装CodeChecker安装结束后再进行
安装依赖
$ sudo apt update
$ sudo apt install software-properties-common
添加PPA源
$ sudo add-apt-repository ppa:deadsnakes/ppa
单机回车后,可以使用apt安装python 3.8(找不到就apt update)
$ sudo apt update
$ sudo apt install python3.8
$ python3.8 -V
$ sudo apt install python3.8-distutils #pip需要的依赖
配置python默认版本为python3.8
$which python3.8
/usr/bin/python3.8
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
$ which python3.5
/usr/bin/python3.5
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
配置python3的默认指向
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 2 auto mode
1 /usr/bin/python3.5 2 manual mode
2 /usr/bin/python3.8 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
选择2,然后测试python的默认版本
$python3 -v
python 3.8.x
安装基础依赖
$ sudo apt-get install clang clang-tidy build-essential curl doxygen
$ sudo apt-get install gcc-multilib git python3.8-dev python3.8-venv
$ sudo apt-get install python3.8-gdbm
使用git下载CodeChecker源文件(CodeChecker的build文件一般是直接建立在这个文件夹里面,所以注意配置路径)
$ git clone https://github.com/Ericsson/CodeChecker.git --depth 1 ~/codechecker
$ cd ~/codechecker
$ sudo apt-get install build-essential
$ sudo pip3 install --upgrade pip3
$ sudo apt install python3.8-distutils
$ sudo apt remove python3-pip
$ sudo apt-get install python3-setuptools
$ sudo python3.8 -m easy_install pip
$ python3 -m pip install --user virtualenv
$ sudo apt install python3.8-venv
挑选好一个目录(env为虚拟环境的名字,和激活名字对应)
$ python3 -m venv env
激活(或者选用CodeChecker自带的虚拟环境激活)
$source env/bin/activate
如果想要关闭激活
$关闭终端
$deactivate
$exit
以上均可
安装nodejs
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt-get install -y nodejs
make package过程中会对没有的包进行下载,建议加sudo执行
$ cd ~/codechecker
$ sudo make package
$ make venv
$ source $PWD/venv/bin/activate
$ export PATH="$PWD/build/CodeChecker/bin:$PATH"
$ make package
如果提示nodejs出现了问题…(不可修复)
在查看了相关问题的log后,查阅stackoverflow等论坛并未解决问题。后面我的解决方式:暴力解决
$ sudo apt remove nodejs
$ sudo rm -rf codechecker
$ 删除pip
然后从3.的
nodejs重装开始
尝试命令
$ CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
报错
[INFO 2020-12-30 22:26] - Starting build ... /bin/sh: 1: cd: can't cd to /home/bsy/your-project Build Failed
为正常
若codechecker安装失败,则会报错
CodeChecker command not found
CodeChecker server中使用 - -reset-root来表示重启后重置root用户账号,那么加上此选项就可以获得一个拥有superpower的账户。
此外server默认绑定localhost网卡的8001端口,如果想要在LAN或者WAN中进行访问,需要更换绑定IP或者更换绑定端口
- -force -authentication 表示启动服务器强制认知,此时使用命令执行完毕后所给的SUPER用户账户密码即可登录
完整的CodeChecker server的启动命令如下
$ nohup CodeChecker server --host 0.0.0.0 \
-p 1234 --reset-root --force-authentication &
source到你所下载的codechecker目录中的venv/bin/activate
export同理需要更换路径中间的用户名
$ source /home/YOUR_USERNAME/codechecker/venv/bin/activate
$ export PATH=/home/YOUR_USERNAME/codechecker/build/CodeChecker/bin:$PATH
之后便可以使用前面的CodeChecker check -b命令进行编译运行,结果保存在results之中,然后store进入服务器即可
$ CodeChecker check -b \
"cd ~/your-project && make clean \
&& make" -o ./results
提交项目到服务器
CodeChecker store ./results -n temp --url 0.0.0.0:1234/Default
!!!目前wiki机由于部分原因,docker总是异常退出,正在修复
登陆wiki机
/home下有脚本CodeChecker.sh,将其复制到~中
/home下有服务器提交密码文件.codechecker.passwords.json,将其复制到~中
然后执行
$ cd ~
$ bash CodeChecker.sh #不能使用sh进行执行,否则虚拟环境无法激活
$ Input the project makefile route (from /) example:/home/Yourname/xxx)
示例:~/project
$ Enter the make order, example: make t=huidu
示例: make clean&&make t=huidu -j8
$ exec completed, input the project name
示例: test1
$ make: *** [all] Error
拷贝/home下的 .codechecker.password.json到~中