代码规范检查工具+代码规范生成工具
代码规范检查工具:
1. arc lint
arc diff时会自动执行arc lint,arc lint会根据配置文件(.arclint)进行代码规范检查,并且只检查最新的提交;需要在每个git仓库的根目录下放置一个.arclint , .arclint规定了检查的内容,以下是.arclint文件的注释(更新中):
{"linters": {"c": {"type": "cpplint","severity":{"whitespace/tab": "disabled","build/include_subdir": "disabled", //引用头文件时不用加相对路径"whitespace/comments": "disabled","whitespace/empty_conditional_body": "disabled","readability/casting": "disabled"},"flags": ["--extensions=h,c"],"include": ["(\\.h$)", "(\\.c$)"]}}
}
代码规范生成工具:
1.clang-format
首先在vscode中安装clang-format插件
在linux下安装clang-format:
sudo apt-get install clang-format
【ctrl + ,】打开搜索栏,分别搜索"clang-format.executable","editor.formatOnSave","clang-format.style","extensions.ignoreRecommendations",修改参考:
配置好以上项目后,在vscode界面通过快捷键shift+alt+F(windows)/ctrl+shift+i(ubuntu)自动格式化代码
"clang-format.executable"表示clang-format的安装路径,linux下查询:
which clang-format
"clang-format.style"表示采用的代码风格,通常用Google;如果此处填写“file”,表示采用
.clang-format中定义的代码风格;如果要用.clang-format,需要在git仓库的根目录下放置一个.clang-format,linux命令行中执行:clang-format -style=llvm -dump-config > .clang-format ,得到默认配置的.clang-format文件,根据需要修改相关配置,以下是.clang-format的注释:
---
# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
Language: Cpp
# BasedOnStyle: LLVM
# 访问说明符(public、private等)的偏移
AccessModifierOffset: -2
# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
AlignAfterOpenBracket: Align
# 连续赋值时,对齐所有等号
AlignConsecutiveAssignments: true
# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: trueAlignEscapedNewlines: Right# 左对齐逃脱换行(使用反斜杠换行)的反斜杠
#AlignEscapedNewlinesLeft: true
# 水平对齐二元和三元表达式的操作数
AlignOperands: true
# 对齐连续的尾随的注释
AlignTrailingComments: true# 允许函数声明的所有参数在放在下一行
AllowAllParametersOfDeclarationOnNextLine: false
# 允许短的块放在同一行
AllowShortBlocksOnASingleLine: true
# 允许短的case标签放在同一行
AllowShortCaseLabelsOnASingleLine: true
# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All
AllowShortFunctionsOnASingleLine: Empty
# 允许短的if语句保持在同一行
AllowShortIfStatementsOnASingleLine: false
# 允许短的循环保持在同一行
AllowShortLoopsOnASingleLine: false# 总是在定义返回类型后换行(deprecated)
AlwaysBreakAfterDefinitionReturnType: None
# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数),
# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)
AlwaysBreakAfterReturnType: None
# 总是在多行string字面量前换行
AlwaysBreakBeforeMultilineStrings: false
# 总是在template声明后换行
AlwaysBreakTemplateDeclarations: false
# false表示函数实参要么都在同一行,要么都各自一行
BinPackArguments: true
# false表示所有形参要么都在同一行,要么都各自一行
BinPackParameters: false
# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping: # class定义后面AfterClass: false# 控制语句后面AfterControlStatement: false# enum定义后面AfterEnum: false# 函数定义后面AfterFunction: true# 命名空间定义后面AfterNamespace: false# ObjC定义后面AfterObjCDeclaration: false# struct定义后面AfterStruct: true# union定义后面AfterUnion: trueAfterExternBlock: false# catch之前BeforeCatch: true# else之前BeforeElse: true# 缩进大括号IndentBraces: falseSplitEmptyFunction: trueSplitEmptyRecord: trueSplitEmptyNamespace: true# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行)
BreakBeforeBinaryOperators: None
# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似),
# Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似),
# Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom
# 注:这里认为语句块也属于函数
BreakBeforeBraces: Custom
# 在三元运算符前换行
BreakBeforeTernaryOperators: false# 在构造函数的初始化列表的逗号前换行
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
# 每行字符的限制,0表示没有限制
ColumnLimit: 80
# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
# 构造函数的初始化列表要么都在同一行,要么都各自一行
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# 构造函数的初始化列表的缩进宽度
ConstructorInitializerIndentWidth: 4
# 延续的行的缩进宽度
ContinuationIndentWidth: 4
# 去除C++11的列表初始化的大括号{后和}前的空格
Cpp11BracedListStyle: true
# 继承最常用的指针和引用的对齐方式
DerivePointerAlignment: false
# 关闭格式化
DisableFormat: false
# 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental)
ExperimentalAutoDetectBinPacking: false
# 需要被解读为foreach循环而不是函数调用的宏
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
# 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前),
# 可以定义负数优先级从而保证某些#include永远在最前面
IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/'Priority: 2- Regex: '^(<|"(gtest|isl|json)/)'Priority: 3- Regex: '.*'Priority: 1
# 缩进case标签
IndentCaseLabels: trueIndentPPDirectives: AfterHash
# 缩进宽度
IndentWidth: 4
# 函数返回类型换行时,缩进函数声明或函数定义的函数名
IndentWrappedFunctionNames: false
# 保留在块开始处的空行
KeepEmptyLinesAtTheStartOfBlocks: false
# 开始一个块的宏的正则表达式
MacroBlockBegin: ''
# 结束一个块的宏的正则表达式
MacroBlockEnd: ''
# 连续空行的最大数量
MaxEmptyLinesToKeep: 1
# 命名空间的缩进: None, Inner(缩进嵌套的命名空间中的内容), All
NamespaceIndentation: Inner
# 使用ObjC块时缩进宽度
ObjCBlockIndentWidth: 4
# 在ObjC的@property后添加一个空格
ObjCSpaceAfterProperty: false
# 在ObjC的protocol列表前添加一个空格
ObjCSpaceBeforeProtocolList: true# 在call(后对函数调用换行的penalty
PenaltyBreakBeforeFirstCallParameter: 19
# 在一个注释中引入换行的penalty
PenaltyBreakComment: 300
# 第一次在<<前换行的penalty
PenaltyBreakFirstLessLess: 120
# 在一个字符串字面量中引入换行的penalty
PenaltyBreakString: 1000
# 对于每个在行字符数限制之外的字符的penalty
PenaltyExcessCharacter: 1000000
# 将函数的返回类型放到它自己的行的penalty
PenaltyReturnTypeOnItsOwnLine: 60# 指针和引用的对齐: Left, Right, Middle
PointerAlignment: Left
# 允许重新排版注释
ReflowComments: true
# 允许排序#include ,容易把“”的头文件排到<>前面,所以关掉
SortIncludes: false# 在C风格类型转换后添加空格
SpaceAfterCStyleCast: falseSpaceAfterTemplateKeyword: true# 在赋值运算符之前添加空格
SpaceBeforeAssignmentOperators: true
# 开圆括号之前添加一个空格: Never, ControlStatements, Always
SpaceBeforeParens: ControlStatements
# 在空的圆括号中添加空格
SpaceInEmptyParentheses: false
# 在尾随的评论前添加的空格数(只适用于//)
SpacesBeforeTrailingComments: 2
# 在尖括号的<后和>前添加空格
SpacesInAngles: false
# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格
SpacesInContainerLiterals: false
# 在C风格类型转换的括号中添加空格
SpacesInCStyleCastParentheses: false
# 在圆括号的(后和)前添加空格
SpacesInParentheses: false
# 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响
SpacesInSquareBrackets: false
# 标准: Cpp03, Cpp11, Auto
Standard: Cpp11
# tab宽度
TabWidth: 4
# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always
UseTab: Never
一个可用的.clang-format文件:
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping: AfterClass: falseAfterControlStatement: falseAfterEnum: falseAfterFunction: falseAfterNamespace: falseAfterObjCDeclaration: falseAfterStruct: falseAfterUnion: falseAfterExternBlock: falseBeforeCatch: falseBeforeElse: falseIndentBraces: falseSplitEmptyFunction: trueSplitEmptyRecord: trueSplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros: - foreach- Q_FOREACH- BOOST_FOREACH
IncludeBlocks: Preserve
IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/'Priority: 2- Regex: '^(<|"(gtest|gmock|isl|json)/)'Priority: 3- Regex: '.*'Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
IndentPPDirectives: None
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
RawStringFormats: - Delimiter: pbLanguage: TextProtoBasedOnStyle: google
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
...
代码规范检查工具+代码规范生成工具相关推荐
- Elasticsearch基础3——密钥库工具、证书生成工具及四种生成模式、https请求步骤流程
文章目录 一.密钥库工具(elasticsearch-keystore) 1.1 列出密钥库里的设置 1.2 查看密钥库密码 1.3 设置/改变秘钥库密码 1.4 添加字符串设置 1.5 添加文件设置 ...
- kali CeWL密码攻击工具 Linux字典生成工具 自定义单词列表生成器
目录 网络安全法普及 1 CeWL 介绍 2 安装 2.1 CentOS安装 3 使用 3.1 帮助 3.2 常用命令 网络安全法普及 中华人民共和国网络安全法 网络安全审查办法 中华人民共和国密码法 ...
- RSA密钥对生成工具代码
RSA密钥对生成工具 RSA密钥对生成工具 RSA密钥生成 RSA密钥写入文件 RSA密钥生成测试 Github代码仓 RSA密钥对生成工具 最近研究License方案,用到了Java生成RSA公私钥 ...
- 虚拟文字内容、图片、头像生成工具
现在设计行业是非常注重版权的,不是随便拿张素材.图片就能放到你的设计稿上面去哦,所以设计达人网一直坚持寻找版权免费使用的素材给大家!不过今天主要是不是素材,而且分享一些虚拟文字.图片.头像生成工具,比 ...
- 在线ASCII banner艺术字生成工具
在线ASCII艺术字生成工具,SpringBoot banner生成工具 在线ASCII艺术字生成工具 ASCII:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西 ...
- 基于MISRA-C和VS Code的代码静态检查的开源解决方案
基于MISRA-C和VS Code的代码静态检查的开源解决方案 简介 工具 配置步骤 简介 MISRA-C是汽车嵌入式软件开发中常用的静态代码检查工具.常用的商用静态代码分析工具,比如QAC.Cove ...
- sitemap生成工具
sitemap生成工具是一种制作网站地图的工具,sitemap生成工具分为客户端和在线两种类型.相比客户端,在线工具有其独特的优势吸引了大量的用户.sitemap生成工具通过一个入口链接,利用爬虫进行 ...
- 玩转Eclipse — 自动代码规范检查工具Checkstyle
大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...
- swift/dart代码规范检查工具介绍
swift/dart代码规范检查工具介绍 简介: 本篇主要介绍swift和dart代码规范检查工具,以及他们的工作原理,操作过程,代码规范规则. 1 swift代码检查工具-swiftlint 1.1 ...
最新文章
- mysql高级操作_mysql数据库表的高级操作
- POJ 3580 SuperMemo
- python+selenium中webdriver相关资源
- 直播 | 北京邮电大学徐逸辰:图对比学习研究进展
- Android平台视频开发
- 语录(心灵鸡汤来一波)
- html5中audio支持音频格式
- 织梦网站地图html制作,dedecms织梦制作xml网站地图的方法
- IOS根据经纬度算距离
- 好程序员web前端分享如何构建单页Web应用
- JS的浮点数计算精度丢失问题解决方案
- 高数 08.02 可分离变量微分方程
- uni-app背景图片全屏
- SpringMVC 学谈 (第四章)
- java计算机毕业设计临大新生入学指导系统源代码+数据库+系统+lw文档
- MYSQL 递归树表函数
- 一篇走心的iOS代码规范!
- 文字图片转成点阵的小工具
- Android Telephony
- 跨考计算机考研华科还是中科大,2018中科大计算机考研经验贴
热门文章
- PiXYZ Studio教程
- Java Web入门之JSTL标签的解析及使用(超详细必看)
- Windows下编译Android所需的FFmpeg库(小白)
- 2022年全球市场智能室内空气质量检测仪总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 大数据获取方法及常用工具学习
- TreeMap与TreeSet(初步了解)
- 转:2013年各大小IT公司待遇,绝对真实,一线数据!
- 前端练习 静态网页(一):导航栏
- Arrays.copyOfRange(T[] original, int from, int to)的使用说明
- TShark 批量转换数据包格式