JenKins结合cppcheck及cpplint进行代码风格及静态代码检测

JenKins结合cppcheck及cpplint

最近公司需要在Jenkins上安装cppcheck及cpplint进行代码风格及静态代码检测,这里记录下过程。

前提条件

  • 安装了Jenkins

步骤如下


第一步:安装cppcheck并配置环境

通过源码安装

下载地址:
https://github.com/danmar/cppcheck/releases/
https://sourceforge.net/projects/cppcheck/files/cppcheck/1.77/
我下的是1.77的版本

减压后,进入目录运行以下命令进行安装

sudo make SRCDIR=build CFGDIR=/usr/share/cppcheck/

sudo make install CFGDIR=/usr/share/cppcheck/

通过apt安装

sudo apt-get install cppcheck

验证

cppcheck --version

第二步:安装cpplint并调整

因为cpplint默认只支持C++语言的风格代码检测,所以要修改代码以支持c语言代码。

下载地址: https://github.com/google/styleguide

修改代码以支持c语言代码

下载完后进入cpplint目录,打开cpplint.py文件,将下面这行的代码

_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh')

修改为

_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh','c'])

新增代码以支持检测目录

因默认的代码只支持单个文件,所以要新增一个代码文件来支持检测目录
在cpplint.py文件的同目录下,新增一个文件cpplintdir.py,内容如下

#!/usr/bin/env python
import os
import fnmatch
import sys
def all_files(root,patterns = '*', single_level = False, yield_folders=False):
    patterns = patterns.split(';')
    for path, subdirs, files in os.walk(root):
        if yield_folders:
            files.extend(subdirs)
        files.sort()
        for name in files:
            for pattern in patterns:
                if fnmatch.fnmatch(name, pattern):
                    yield os.path.join(path,name)
                    break
        if single_level:
            break

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print 'Please set the absolute path as the first parameter for parse.'
        sys.exit()
    for path in all_files(sys.argv[1],'*.cpp;*.h;*.c'):

        os.system("python cpplint.py %s"%(path))

增加文件执行权限

sudo chmod +x cpplint.py
sudo chmod +x cpplintdir.py

第三步:Jenkins安装cppcheck及Warnings Plug-in插件

因为JenKins目前没有cpplint的插件,所以通过Warnings Plug-In来搜集cpplint的报告。

安装cppcheck及Warnings Plug-in插件

进入Jenkins的系统管理>插件管理>可选插件

cppcheck安装过程如下图所示,Warnings Plug-in的过程是一样的
这里写图片描述

第四步:Jenkins配置Jobs

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

cd /var/lib/jenkins/jobs/styleguide/cpplint

python goodixlint.py /var/lib/jenkins/jobs/TestProjectSrc/workspace 2>&1 | tee cpplint-style.xml


cp cpplint-style.xml /var/lib/jenkins/jobs/TestProjectSrc/workspace/cpplint-style.xml

cd /var/lib/jenkins/jobs/TestProjectSrc/workspace

mkdir static_analysis   

cppcheck  4 --enable=all --inconclusive --xml --xml-version=2 -q ./src 2>static_analysis/src-cppcheck.xml


exit 0


cd /var/lib/jenkins/jobs/TestProjectSrc/workspace

pwd

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值