【编程基础】CppLint工具使用过程
前言
coding最好要形成一定的编程风格,一般常用的开源风格有google code style,可以使用cpplint工具检查是否符合该编程风格。
Cpplint是一个Python脚本,作为一款开源免费的代码静态检测工具,Google也使用它作为自己的C++代码检测工具,也就是说,只要你想代码遵从Google C++代码规范,那么Cpplint将会提供很好的代码静态检测支持。
1) Cpplint.py支持的文件格式包括.cc、.h、.cpp、.cu、.cuh。
2) 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=0 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 1 -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+1)) 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 1 ] 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使用技巧;
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】