zoukankan      html  css  js  c++  java
  • 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
    cd /var/lib/jenkins/jobs/TestProjectSrc/workspace
    pwd

    例子:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

  • 相关阅读:
    python编程基础之十四
    python编程基础之十三
    python编程基础之十二
    C++11的新特性
    第六章 分支语句和逻辑运算符
    第五章 循环和关系表达式
    C++ 管理数据内存的方法
    C++数组和指针
    第二、三章 开始学习C++、数据处理
    第一章 预备知识
  • 原文地址:https://www.cnblogs.com/gaoguangjun/p/8525892.html
Copyright © 2011-2022 走看看