【编程基础】CppLint工具使用过程
前言
coding最好要形成一定的编程风格,一般常用的开源风格有google code style,可以使用cpplint工具检查是否符合该编程风格。
目录
1. linux系统使用过程;
2. windows系统使用过程;
注意,目前cpplint.py是基于python2的脚本,若要使用python3请按照python3改写cpplint.py。
操作
1. linux系统使用过程
1.1 安装cpplint;
$pip install cpplint
1.2 保存cpplint.py文件;
1.3 检测单个文件;
cpplint_dir$python2 cpplint.py test.cpp
1.4 检测批量文件;
根据要检测的文件编写shell脚本,然后运行即可。
注意,sh和bat适应于不同的系统,bat文件是window系统的执行文件,sh是linux系统的批处理文件。
cpplint_shell.sh实例;
#! /bin/bash
echo "^@^cpplint code style check through shell====^@^"
index=
config=""
pwd_path=`pwd`
cpplint_path="$pwd_path/cpplint.py"
echo cpplint_path=$cpplint_path src_path="$pwd_path/src"
echo src_path=$src_path
# add file to an array,and check file in array last
# for file in `find $src_path -name "*.h" -type f`
for file in `find $src_path -maxdepth -type f | grep -E "\.h$|\.cc$|\.cu$|\.cpp$"`
do
echo file=$file
echo -e "\033[36m ===> [FILE] \033[0m \033[47;31m $file \033[0m"
check_files[$index]=$file
index=$(($index+))
done
# accroding to config options make a checking command
# first check if python2 exists
check_cmd=""
is_python2_exists=`ls /usr/bin/ | grep -E '^python2$' | wc -l`
if [ $is_python2_exists -ge ]
then
# read cpplint.ini to decide which option to add
for file in ${check_files[*]}
do
check_cmd="python2 $cpplint_path --linelength=80"
echo -e "\033[33m =========== check file $file =============\033[0m"
check_cmd="$check_cmd"$file
eval $check_cmd
echo -e "\033[45m ==========================================\033[0m"
done
fi
运行:
cpplint_dir$sudo bash cpplint_shell.sh
这个脚本是直接在terminal终端打印信息,更进一步,其实可以尝试生成检测报告,也可以尝试将检测信息当成注释放在源文件。
注意,一定要使用bash,被这个问题搞了半天,(# ̄~ ̄#)
这是因为sh和bash的shell解析器版本不一样,版本不同,解析规则有不一样的地方。
使用sh运行的时候出现bad substitution的错误,使用bash就没有问题啦。。。
2. windows系统使用过程
2.1 安装python,注意设置系统环境变量,将python的安装目录写入path环境变量,保存cpplint.py文件;
2.2 运行命令或者脚本文件;
命令行:
cpplint_py_dir$python cpplint.py test.cpp
batch文件:
echo off
python cpplint.py test.cc --output=vs7 > report.txt 2>&1
pause
执行bat文件即可;
2.3 批量检测分析;
步骤:在目录下创建src和reports目录;将要检测的源文件置于src目录;修改batch文件并执行;
echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set suffix=.report.txt
set src_path=src
set reports_path=reports
for %%i in (%src_path%/*.cpp) do (
echo %%i
set report_name=%reports_path%/%%i%suffix%
set src_name=%src_path%/%%i
echo src_name=!src_name!
echo report_name=!report_name!
python cpplint.py !src_name! --counting=toplevel --output=vs7 > !report_name! 2>&1
)
pause
注意,1)等号=两边没有空格等。2)必须在dos下实验目录运行bat文件。3)bat文件是dos下的批处理文件。
运行脚本:
cpplint_py_dir$./cpplint_batch.bat
参考
1. 静态代码分析工具汇总;
3. google code style on github;
4. Google代码规范工具Cpplint的使用_fengbingchun_windows;
5. cpplint_github;
6. cpplint使用技巧;
完
【编程基础】CppLint工具使用过程的更多相关文章
- ※编程随笔※=>☆编程基础☆=>※№ SVN工具自动属性 $Author$ $Date$ $Revision$ $URL$ $Header$替换
TortoiseSVN设置->常规设置->subversion 配置文件 ->编辑 或者 Windows XP 在 C:\Documents and Settings\Adminis ...
- 并行计算基础&编程模型与工具
在当前计算机应用中,对快速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如大型科学project计算与数值模拟: 数据密集(Da ...
- 老李分享: 并行计算基础&编程模型与工具 1
老李分享: 并行计算基础&编程模型与工具 在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如 ...
- 老李分享: 并行计算基础&编程模型与工具
在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如大型科学工程计算与数值模拟: 数据密集(Data-In ...
- 老李分享: 并行计算基础&编程模型与工具 2
2.并行编程模型和工具 – MPI – MPI(Message Passing Interface)是一种消息传递编程模型,服务于进程通信.它不特指某一个对它的实现,而是一种标准和规范的代表,它是一种 ...
- LINQ to XML 编程基础
1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocumen ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
- (转)Windows驱动编程基础教程
版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...
- 操作系统内核Hack:(二)底层编程基础
操作系统内核Hack:(二)底层编程基础 在<操作系统内核Hack:(一)实验环境搭建>中,我们看到了一个迷你操作系统引导程序.尽管只有不到二十行,然而要完全看懂还是需要不少底层软硬件知识 ...
随机推荐
- Intel 80386 CPU
一.80386 概述 80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC相容机中.这些PC机称为「80386电脑」或「386电脑」,有时也简称「80386」或「386」.80 ...
- linux ftp启用和停用及vsftpd安装 ssh 启用和停用命令及ssh的安装
1.首页要用ftp:服务器上必须安装vsftpd 安装命令 yum installed vsftpd 查看vsftpd是否启动 root@DK:/home/daokr# service vsftpd ...
- shell脚本之文件操作
文件测试运算符 文件测试运算符用于检测 Unix 文件的各种属性. 下面最常用的是 -f 参数 来检查是否是文件 #!/bin/bash #start nginx php-fpm list1=&quo ...
- Ubuntu 系统安装ssh的命令
更新源列表 打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-- ...
- luogu P1046 陶陶摘苹果
二次联通门 : luoguP1046 /* 这个题好难..... 由苹果树可知 这应该是个树结构的题 所以很自然的想到了用树链剖分来搞一下 连边 最后查询以1为根节点的子树的权值和... 从前闲的没事 ...
- 服务器上build.xml文件乱码解决(亲测有效)
前提条件:必须root账户登录系统,否则无权限 1. 修改/etc/sysconfig/i18n: 拷贝如下内容到文件中 #LANG="zh_CN.UTF-8" LANG=&quo ...
- HTTP请求响应的过程
1. TCP/IP协议分层结构 应用层(含括了OSI七层中的上三层,分别为应用层,表示层, 会话层):DNS, URI, HTML, HTTP, TLS/SSL, SMTP, POP, ...
- 并发用户 VS TPS
TPS模式(吞吐量模式)是一种更好的方式衡量服务端系统的能力. 基本概念: 并发用户数:简称VU ,指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User),注 ...
- select,poll,epoll最简单的解释
从事服务端开发,少不了要接触网络编程.epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx.Redis.Skynet 和大部分游戏服务器都使用到这一多路复用技术. epoll ...
- SQL语句简单增删改查
常用数据类型 Int:整数,长度没有作用 Varchar:字符串,varchar(3)表示最多存放3个字符,1个中文或英文或符合都占1个字符 Decimal:小数,decimal(5,2)表示共存5位 ...