当前位置: 首页 > news >正文

乐山网站营销推广哪家公司好seo排名点击首页

乐山网站营销推广哪家公司好,seo排名点击首页,专业制作网站 上海,网站建设 东道网络最近的Java后端项目想实现代码的规范检查,调研了一圈,终于找到了简单的方式实现:以下是常见的几种方案: 1、在客户端做 git hook,主要是用 pre-commit 这个钩子。前端项目中常见的 husky 就是基于此实现的。但缺点也很…

最近的Java后端项目想实现代码的规范检查,调研了一圈,终于找到了简单的方式实现:以下是常见的几种方案:

1、在客户端做 git hook,主要是用 pre-commit 这个钩子。前端项目中常见的 husky 就是基于此实现的。但缺点也很明显,就是在本地把这个钩子删了、或者 git commit --no-verify 就绕开了。不过小团队、大家约定好的话这种方案是最方便的。

2、在服务端做 git hook,主要是用 pre-receive 这个钩子。

3、不限制 push、但通过其他方式限制。比如可以通过 CI 限制,例如在 forking-workflow 模式中设置在 Merge 时自动执行一个 Actions 来执行 Lint,对于不合格的 Merge Request 直接关闭掉不允许合并,以变相到达不合格代码进入主干的目的。

其中 1、2 两点跟 GitLab 无关,需要的都是写 Shell 脚本而已。第 3 种可以在 GitLab 用图形化方式设置。

小团队的第一种用的比较多;大团队这一步骤大多是跟 CI/CD 工作流紧密结合的。

我们用的方式是第一种在客户端校验,加上checkStyle 工具包,checkStyle可以直接在IDEA插件中搜索。

 

下载Checkstyle jar包 官网地址,GitHulb,目前最近版本为checkstyle-8.12-all.jar

下载对应的规范约束xml文件,目前主要是有三种Alibaba_check.xml、sun_checks.xml 和google_checks.xml

我们用的完整的规范如下:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC"-//Puppy Crawl//DTD Check Configuration 1.3//EN""http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--文件描述:阿里巴巴代码规范完整版-->
<!--创建日期:20230203-->
<!--创建人:QC班长-->
<module name="Checker"><!-- 检查文件是否以一个空行结束 --><module name="NewlineAtEndOfFile"/><!-- 长度检查 --><!-- 每行不超过120个字符 --><module name="LineLength"><property name="max" value="120" /></module><!-- 文件长度不超过1500行 --><module name="FileLength"><property name="max" value="1500"/></module><!-- 每个java文件一个语法树 --><module name="TreeWalker"><!-- import检查--><!-- 避免使用* -->
<!--        <module name="AvoidStarImport">-->
<!--            <property name="excludes" value="java.io,java.net,java.lang.Math"/>-->
<!--            &lt;!&ndash; 实例;import java.util.*;.&ndash;&gt;-->
<!--            <property name="allowClassImports" value="false"/>-->
<!--            &lt;!&ndash; 实例 ;import static org.junit.Assert.*;&ndash;&gt;-->
<!--            <property name="allowStaticMemberImports" value="true"/>-->
<!--        </module>--><!-- 检查是否从非法的包中导入了类 --><module name="IllegalImport"/><!-- 检查是否导入了多余的包 --><module name="RedundantImport"/><!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 --><module name="UnusedImports" /><!-- 注释检查 --><!-- 检查方法和构造函数的javadoc --><module name="JavadocType"><property name="allowUnknownTags" value="true"/><message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/></module><!-- 命名检查 --><!-- 局部的final变量,包括catch中的参数的检查 --><module name="LocalFinalVariableName" /><!-- 局部的非final型的变量,包括catch中的参数的检查 --><module name="LocalVariableName" /><!-- 包名的检查(只允许小写字母),默认^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ --><module name="PackageName"><property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /><message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/></module><!-- 仅仅是static型的变量(不包括static final型)的检查 --><module name="StaticVariableName" /><!-- Class或Interface名检查,默认^[A-Z][a-zA-Z0-9]*$--><module name="TypeName"><property name="severity" value="warning"/><message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/></module><!-- 非static型变量的检查 --><module name="MemberName" /><!-- 方法名的检查 --><module name="MethodName" /><!-- 方法的参数名 --><module name="ParameterName " /><!-- 常量名的检查(只允许大写),默认^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ --><module name="ConstantName" /><!-- 定义检查 --><!-- 检查数组类型定义的样式 --><module name="ArrayTypeStyle"/><!-- 检查long型定义是否有大写的“L” --><module name="UpperEll"/><!-- 方法不超过50行 --><module name="MethodLength"><property name="tokens" value="METHOD_DEF" /><property name="max" value="50" /></module><!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查--><module name="ParameterNumber"><property name="max" value="5" /><property name="ignoreOverriddenMethods" value="true"/><property name="tokens" value="METHOD_DEF" /></module><!-- 空格检查--><!-- 方法名后跟左圆括号"(" --><module name="MethodParamPad" /><!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 --><module name="TypecastParenPad" /><!-- 检查在某个特定关键字之后应保留空格 --><module name="NoWhitespaceAfter"/><!-- 检查在某个特定关键字之前应保留空格 --><module name="NoWhitespaceBefore"/><!-- 操作符换行策略检查 --><module name="OperatorWrap"/><!-- 圆括号空白 --><module name="ParenPad"/><!-- 检查分隔符是否在空白之后 --><module name="WhitespaceAfter"/><!-- 检查分隔符周围是否有空白 --><module name="WhitespaceAround"/><!-- 修饰符检查 --><!-- 检查修饰符的顺序是否遵照java语言规范,默认public、protected、private、abstract、static、final、transient、volatile、synchronized、native、strictfp --><module name="ModifierOrder"/><!-- 检查接口和annotation中是否有多余修饰符,如接口方法不必使用public --><module name="RedundantModifier"/><!-- 代码块检查 --><!-- 检查是否有嵌套代码块 --><module name="AvoidNestedBlocks"/><!-- 检查是否有空代码块 --><module name="EmptyBlock"/><!-- 检查左大括号位置 --><module name="LeftCurly"/><!-- 检查代码块是否缺失{} --><module name="NeedBraces"/><!-- 检查右大括号位置 --><module name="RightCurly"/><!-- 代码检查 --><!-- 检查空的代码段 --><module name="EmptyStatement"/><!-- 检查在重写了equals方法后是否重写了hashCode方法 --><module name="EqualsHashCode"/><!-- 检查局部变量或参数是否隐藏了类中的变量 --><module name="HiddenField"><property name="tokens" value="VARIABLE_DEF"/></module><!-- 检查是否使用工厂方法实例化 --><module name="IllegalInstantiation"/><!-- 检查子表达式中是否有赋值操作 --><module name="InnerAssignment"/><!-- 检查是否有"魔术"数字 --><module name="MagicNumber"><property name="ignoreNumbers" value="0, 1"/><property name="ignoreAnnotation" value="true"/></module><!-- 检查switch语句是否有default --><module name="MissingSwitchDefault"/><!-- 检查是否有过度复杂的布尔表达式 --><module name="SimplifyBooleanExpression"/><!-- 检查是否有过于复杂的布尔返回代码段 --><module name="SimplifyBooleanReturn"/><!-- 类设计检查 --><!-- 检查类是否为扩展设计l --><!-- 检查只有private构造函数的类是否声明为final --><module name="FinalClass"/><!-- 检查工具类是否有putblic的构造器 --><module name="HideUtilityClassConstructor"/><!-- 检查接口是否仅定义类型 --><module name="InterfaceIsType"/><!-- 检查类成员的可见度 检查类成员的可见性。只有static final 成员是public的除非在本检查的protectedAllowed和packagedAllowed属性中进行了设置--><module name="VisibilityModifier"><property name="packageAllowed" value="true"/><property name="protectedAllowed" value="true"/></module><!-- 语法 --><!-- String的比较不能用!= 和 == --><module name="StringLiteralEquality"/><!-- 限制for循环最多嵌套2层 --><module name="NestedForDepth"><property name="max" value="2"/></module><!-- if最多嵌套3层 --><module name="NestedIfDepth"><property name="max" value="3"/></module><!-- 检查未被注释的main方法,排除以Appllication结尾命名的类 --><module name="UncommentedMain"><property name="excludedClasses" value=".*Application$"/></module><!-- 禁止使用System.out.println --><module name="Regexp"><property name="format" value="System\.out\.println"/><property name="illegalPattern" value="true"/></module><!-- return个数 3个--><module name="ReturnCount"><property name="max" value="3"/></module><!--try catch 异常处理数量 3--><module name="NestedTryDepth "><property name="max" value="3"/></module><!-- clone方法必须调用了super.clone() --><module name="SuperClone" /><!-- finalize 必须调用了super.finalize() --><module name="SuperFinalize" /></module>
</module>

IDEA中的配置


代码规范检测工具配置


打开file --> settings,找到Plugins ,输入 checkStyle-IDEA,点击install 安装

考虑到CheckStyle提供的校验规则很严格,这里我们用自定义的校验规则[alibaba-checks.xml]


打开file --> settings,找到Tools ,可以看到安装好的 checkstyle,Configuration File-->点击➕添加项目中的配置文件,选择checks/alibaba-checks.xml文件,输入名称,点击下一步,完成。

 这样子就好了,不符合规范的代码会直接标红显示

 参考文献:


1、java代码提交到git服务器如何能自动检查代码规范? - SegmentFault 思否

2、git下使用checkstyle构建代码风格检查_唯一昵称真难的博客-CSDN博客_checkstyle+git 

3、符合阿里巴巴代码规范的checkstyle检测文件_KimZing的博客-CSDN博客 

4、pre-commit 

5、使用 pre-commit 实现代码检查_清欢守护者的博客-CSDN博客 

http://www.yayakq.cn/news/275017/

相关文章:

  • 通江县建设局网站定制网络营销计划
  • 有产品做推广 选哪个 网站外贸网站的特点
  • 求合伙人做网站我们公司做的网络推广
  • 电脑外设网站建设论文做游戏模板下载网站有哪些内容
  • 珍佰农 商城网站建设网页制作教程考拉
  • 制作app需要网站吗兰州网站建设加q.479185700
  • 中国建设银行黄陂支行网站河北seo平台
  • 自助建站凡科网特殊字体生成器
  • 佛山精品网站建设温州微网站制作电话
  • .net开发网站怎么样天津市最新消息今天
  • 洋洋点建站企业做电商网站
  • 搭建网站原理怎样安装免费的wordpress
  • 整站优化温州怎么做?珠海建设局网站查公司业绩
  • 学做网站记不住代码网站建设验收标准
  • 2010年最具人气的平面设计师必备网站网站模板怎么建设
  • 网站代发外链驻马店 市网站建设
  • 常州本地招聘网站南宁建站模板源码
  • 戴尔公司网站建设成功的关键广安市建设局新网站
  • 新网站怎么做才能让搜狗收录wordpress默认文章模式
  • 做照片的网站有哪些王府井百货网上商城
  • 北京网站定制公司南宁网站建设优化案例
  • 子网站用织梦系统企业网站制作的软件
  • 用什么做公司宣传网站商务网站建设与规划
  • 成都彩票网站开发中文域名注册机构
  • 用安卓手机做网站主机本溪网站设计公司
  • 重庆奉节网站建设公司哪家好西安短视频培训班哪个好
  • wordpress站迁移后速度慢公司网站建设需要注意事项
  • 四川省建设厅职称查询网站网站读取错误时怎样做
  • 大悟网站建设软文广告经典案例200字
  • 新建的网站可以百度推广网站怎么做拉新