传统的方式:编码规范文档。
所有开发人员都要学习编码规范文档,并且需要按照文档的规范去编写代码。
这就会产生一系列的问题:
1学习成本高。写代码还要先学习文档。
2开发效率低。一边敲代码一遍去看规范文档。看看包的命名是否符合规范。
3并不是每个开发人员都会严格按照规范的要求来编写代码。是不是
这就导致代码规范并没有真正执行起来。开发人员还是按照自己的方式去敲代码。
S71的方式:IDE插件
不管是eclipse,还是idea,只要安装S71的插件,就能在编码的过程中,由S71自动的侦测代码中的不规范的地方。
若发现存在不规范不合理的地方,就会在控制台展示出来,并给出提示和建议。
比如说:包名没有以com.jd开头,if判断后面没有大括号,类和方法没有写注释。
区别:
规范文档采用的是主动策略,规范执行的成败完全取决于开发人员的主动性。
S71采用的是被动策略,开发人员是被动的,必须按照代码规范来编写代码。
这种由主动到被动的转变就是S71所做的工作。
S71是采用以pmd为底层服务支持,并加入自定义规约组成的IDE插件。
主要分为两层:
应用层:eclipse插件,idea插件
核心服务层:核心服务层又有:pmd底层服务和大客代码规约组成。
pmd(sourceforge社区的一个产品): 是一个开源的代码分析器。可以查找一些常见的编程缺陷。 目前支持java,javascript,c++,python,swift,scala等编程语言。
pmd主要是将java源代码解析成抽象语法树。通过对语法树进行分析就可以定位到代码中的问题。比如:没有注释,kc-code-rule:根据pmd提供的语法树,去创建符合自己编码的规则。
比如说:创建包名必须以com.jd开头的规则, 在语法树中找到与包名相关的语法,然后对包名进行分析处理即可。根据规约的不同,制定了不同的规则级别。如:
1,Blocker 编译错误 包名没有以com.jd开头
2,Critical 警告 常量命名没有大写。
3,Major 提醒 类和方法没有添加注释
整个核心服务层支持了eclipse插件和idea插件。 将来如果有更多的IDE,都可以基于核心服务层进行开发。