代码规范检查工具:

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
...

代码规范检查工具+代码规范生成工具相关推荐

  1. Elasticsearch基础3——密钥库工具、证书生成工具及四种生成模式、https请求步骤流程

    文章目录 一.密钥库工具(elasticsearch-keystore) 1.1 列出密钥库里的设置 1.2 查看密钥库密码 1.3 设置/改变秘钥库密码 1.4 添加字符串设置 1.5 添加文件设置 ...

  2. kali CeWL密码攻击工具 Linux字典生成工具 自定义单词列表生成器

    目录 网络安全法普及 1 CeWL 介绍 2 安装 2.1 CentOS安装 3 使用 3.1 帮助 3.2 常用命令 网络安全法普及 中华人民共和国网络安全法 网络安全审查办法 中华人民共和国密码法 ...

  3. RSA密钥对生成工具代码

    RSA密钥对生成工具 RSA密钥对生成工具 RSA密钥生成 RSA密钥写入文件 RSA密钥生成测试 Github代码仓 RSA密钥对生成工具 最近研究License方案,用到了Java生成RSA公私钥 ...

  4. 虚拟文字内容、图片、头像生成工具

    现在设计行业是非常注重版权的,不是随便拿张素材.图片就能放到你的设计稿上面去哦,所以设计达人网一直坚持寻找版权免费使用的素材给大家!不过今天主要是不是素材,而且分享一些虚拟文字.图片.头像生成工具,比 ...

  5. 在线ASCII banner艺术字生成工具

    在线ASCII艺术字生成工具,SpringBoot banner生成工具 在线ASCII艺术字生成工具 ASCII:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西 ...

  6. 基于MISRA-C和VS Code的代码静态检查的开源解决方案

    基于MISRA-C和VS Code的代码静态检查的开源解决方案 简介 工具 配置步骤 简介 MISRA-C是汽车嵌入式软件开发中常用的静态代码检查工具.常用的商用静态代码分析工具,比如QAC.Cove ...

  7. sitemap生成工具

    sitemap生成工具是一种制作网站地图的工具,sitemap生成工具分为客户端和在线两种类型.相比客户端,在线工具有其独特的优势吸引了大量的用户.sitemap生成工具通过一个入口链接,利用爬虫进行 ...

  8. 玩转Eclipse — 自动代码规范检查工具Checkstyle

    大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...

  9. swift/dart代码规范检查工具介绍

    swift/dart代码规范检查工具介绍 简介: 本篇主要介绍swift和dart代码规范检查工具,以及他们的工作原理,操作过程,代码规范规则. 1 swift代码检查工具-swiftlint 1.1 ...

最新文章

  1. mysql高级操作_mysql数据库表的高级操作
  2. POJ 3580 SuperMemo
  3. python+selenium中webdriver相关资源
  4. 直播 | 北京邮电大学徐逸辰:图对比学习研究进展
  5. Android平台视频开发
  6. 语录(心灵鸡汤来一波)
  7. html5中audio支持音频格式
  8. 织梦网站地图html制作,dedecms织梦制作xml网站地图的方法
  9. IOS根据经纬度算距离
  10. 好程序员web前端分享如何构建单页Web应用
  11. JS的浮点数计算精度丢失问题解决方案
  12. 高数 08.02 可分离变量微分方程
  13. uni-app背景图片全屏
  14. SpringMVC 学谈 (第四章)
  15. java计算机毕业设计临大新生入学指导系统源代码+数据库+系统+lw文档
  16. MYSQL 递归树表函数
  17. 一篇走心的iOS代码规范!
  18. 文字图片转成点阵的小工具
  19. Android Telephony
  20. 跨考计算机考研华科还是中科大,2018中科大计算机考研经验贴

热门文章

  1. PiXYZ Studio教程
  2. Java Web入门之JSTL标签的解析及使用(超详细必看)
  3. Windows下编译Android所需的FFmpeg库(小白)
  4. 2022年全球市场智能室内空气质量检测仪总体规模、主要生产商、主要地区、产品和应用细分研究报告
  5. 大数据获取方法及常用工具学习
  6. TreeMap与TreeSet(初步了解)
  7. 转:2013年各大小IT公司待遇,绝对真实,一线数据!
  8. 前端练习 静态网页(一):导航栏
  9. Arrays.copyOfRange(T[] original, int from, int to)的使用说明
  10. TShark 批量转换数据包格式