现在的项目往往都是多人协作完成,往往会出现代码格式不统一,低级bug增多,也会造成开发不愿意修改别人的代码。
为了最大程度做到代码低级bug少,代码格式统一,易读易改,需要引入代码扫描与格式化工具。
选型
常用的代码扫描工具有findbugs,pmd等。
常用的代码格式化工具有checkstyle,spotless等。
本次实践的编码语言为java,编译工具为maven。
因为长时间使用p3c作为代码规范的工具,那么扫描工具可以选择maven-pmd,格式化工具则可以选择maven-spotless,全部采用maven插件的方式运行,并绑定编译生命周期。
在服务器上自动化编译代码时,扫描结果通过邮件通知到committer,格式化后的文件则自动提交到对应的分支。
在IDE上,我们统一使用idea作为开发工具。
在开发的电脑上可以安装p3c插件和eclipse format插件,因为很难保证所有开发的电脑的IDE配置是一致的,所以这一块不做硬性要求,能配最好。
我们只要保证CICD可以正确扫描代码和格式代码即可满足我们的要求。
maven pmd p3c
两个version全部用最新的版本即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>${maven-pmd-plugin.version}</version> <configuration> <rulesets> <ruleset>rulesets/java/ali-comment.xml</ruleset> <ruleset>rulesets/java/ali-concurrent.xml</ruleset> <ruleset>rulesets/java/ali-constant.xml</ruleset> <ruleset>rulesets/java/ali-exception.xml</ruleset> <ruleset>rulesets/java/ali-flowcontrol.xml</ruleset> <ruleset>rulesets/java/ali-naming.xml</ruleset> <ruleset>rulesets/java/ali-oop.xml</ruleset> <ruleset>rulesets/java/ali-orm.xml</ruleset> <ruleset>rulesets/java/ali-other.xml</ruleset> <ruleset>rulesets/java/ali-set.xml</ruleset> </rulesets> <printFailingErrors>true</printFailingErrors> </configuration> <dependencies> <dependency> <groupId>com.alibaba.p3c</groupId> <artifactId>p3c-pmd</artifactId> <version>${p3c-pmd.version}</version> </dependency> </dependencies> <executions> <execution> <goals> <goal>aggregate-pmd</goal> </goals> <phase>compile</phase> </execution> </executions> </plugin>
|
maven spotless p3c
插件版本依然选择最新的版本,java的eclipse format文件从p3c的github上下载后,放到工程下,并修改配置。
spotless maven的一些配置见spotless github官网。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> <version>${spotless-maven-plugin.version}</version> <configuration> <formats> <format> <includes> <include>*.java</include> </includes> <trimTrailingWhitespace/> <endWithNewline/> <indent> <tabs>true</tabs> <spacesPerTab>4</spacesPerTab> </indent> </format> </formats> <java> <includes> <include>src/main/java/**/*.java</include> <include>src/test/java/**/*.java</include> </includes> <removeUnusedImports/> <eclipse> <version>4.13.0</version> <file>${maven.multiModuleProjectDirectory}/src/main/resources/ycmj_eclipse_formatter.xml</file> </eclipse> </java> <pom> <includes> <include>pom.xml</include> </includes> <sortPom> <expandEmptyElements>false</expandEmptyElements> <nrOfIndentSpace>4</nrOfIndentSpace> </sortPom> </pom> </configuration> <executions> <execution> <goals> <goal>apply</goal> </goals> <phase>compile</phase> </execution> </executions> </plugin>
|
idea p3c配置
IDEA插件使用文档
代码质量 - 统一风格:统一代码格式化详解
搭配save action使用更香
效率提升-idea插件(save action)