当前位置: 首页 > 工具软件 > CodeChecker > 使用案例 >

Ubuntu16.04安装CodeChecker及CodeChecker服务器的配置

廖琨
2023-12-01

Ubuntu安装CodeChecker

首先环境使用的是Ubuntu16.04发行版
其自带的python版本为3.5,gcc版本为5
CodeChecker需要python版本>=3.6

经过实验,发现Ubuntu版本过低时,如果不能按照如下方法使用apt直接安装python,那么需要使用gcc对python源码进行进行编译安装。此时gcc版本应至少>=5。否则无法对python进行编译安装(至少gcc4.8.1不行)

因此如果需要gcc降级,那么务必在安装CodeChecker安装结束后再进行

1. 首先更新python版本(python3.5-python3.8)

安装依赖

$ 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

2. 安装CodeChecker的依赖,下载CodeChecker源文件

安装基础依赖

$ 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

3. 配置python虚拟环境

附录:安装虚拟环境需要使用pip,如果没有pip,请按照如下过程安装对应版本的pip
$ sudo apt-get install build-essential 
$ sudo pip3 install --upgrade pip3
$ sudo apt install python3.8-distutils
附录:如果pip所指向的python版本不对,或者后续pip install virtual env出现问题,那么执行以下pip重装。重新指定指向(直接用这条也可以)
$ sudo apt remove python3-pip
$ sudo apt-get install python3-setuptools
$ sudo python3.8 -m easy_install pip

安装python虚拟环境

$ python3 -m pip install --user virtualenv
$ sudo apt install python3.8-venv

挑选好一个目录(env为虚拟环境的名字,和激活名字对应)

$ python3 -m venv env

激活(或者选用CodeChecker自带的虚拟环境激活)

$source env/bin/activate

如果想要关闭激活

$关闭终端
$deactivate
$exit
以上均可

4. 安装CodeChecker

安装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重装开始

5. 安装完成

尝试命令

$ 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

6. CodeChecker的服务器配置问题

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 &

7. 使用

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

8. 简便使用方法

!!!目前wiki机由于部分原因,docker总是异常退出,正在修复
登陆wiki机
/home下有脚本CodeChecker.sh,将其复制到~中
/home下有服务器提交密码文件.codechecker.passwords.json,将其复制到~中
然后执行

$ cd ~
$ bash CodeChecker.sh #不能使用sh进行执行,否则虚拟环境无法激活

步骤一:输入项目的地址,即在哪里进行g++/make

$ 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

步骤三:如果make完成,则会弹出(该指令会同时将项目运行结果提交至服务器)

$ exec completed, input the project name
示例: test1

步骤3.5.1:如果make失败,ctrl-C结束bash脚本

$ make: *** [all] Error 

步骤3.5.2:如果显示需要密码/密码错误

拷贝/home下的 .codechecker.password.json到~中

步骤4:static analysis执行(此过程很慢)

步骤5:执行完毕后,输入项目名#版本号#注释,然后去网站上查看即可

 类似资料: