工欲善其事必先利其器,一款好的开发工具不但能大大缩减我们编码的时间,而且能使我们规范开发,还能秀出操作。本文将简单介绍一些本人见识过的开发工具。
写在前面:插件查找菜单 >>>>> File->Settings->Plugins,并按照下文中的插件名称进行搜索
官网插件库:https://plugins.jetbrains.com/
为了让开发者更加方便、快速将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse)。该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,我们还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
1.在Tools->阿里编码规范中未开启实时监测功能,可通过在java文件中直接右击选择“编码规则扫描”,可在Inspection Results中查看不规范信息。
2.在Tools->阿里编码规范中开启实时监测功能,在不规范的代码中,插件将会用波浪线提示。这时可直接将鼠标坐标处于在波浪线上的代码处,通过快捷键ALT+ENTER,进行快速修复。
checkstyle官网地址http://checkstyle.sourceforge.net/
当然每家公司可能会有自己的代码规范,这时候不妨考虑下CheckStyle。
1.在File->Setting->Editor->CheckStyle中选择是否进行实时检查。
(1) 实时检查,实时地对不规范的书写进行提示 ,并在编辑页面中进行颜色标识。
(2) 取消实时检查后,可在打开的文件中右击选择Check Current File对当前页面进行检查,此时可在** CheckStyle Scan** 面板中查看不规范内容,点击条目可查看对应出错语句。
2.在File->Setting->Other Setting->checkStyle中配置自定义的代码规范
代码规范文件示例:
<module name="Checker">
<module name="NewlineAtEndOfFile"/>
<module name="Translation"/>
<module name="FileLength">
<property name="max" value="1500"/>
module>
<module name="FileTabCharacter"/>
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="message" value="Line has trailing spaces."/>
module>
<module name="TreeWalker">
<module name="JavadocMethod">
<property name="tokens" value="METHOD_DEF" />
module>
<module name="JavadocType"/>
<module name="JavadocVariable"/>
<module name="JavadocStyle">
<property name="checkFirstSentence" value="false"/>
module>
<module name="TodoComment"/>
<module name="LocalFinalVariableName" />
<module name="LocalVariableName" />
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
<message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/>
module>
<module name="StaticVariableName" />
<module name="TypeName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/>
module>
<module name="MemberName" />
<module name="MethodName" />
<module name="ParameterName " />
<module name="ConstantName" />
<module name="ArrayTypeStyle"/>
<module name="UpperEll"/>
<module name="AvoidStarImport"/>
<module name="IllegalImport"/>
<module name="RedundantImport"/>
<module name="UnusedImports" />
<module name="LineLength">
<property name="max" value="150" />
module>
<module name="MethodLength">
<property name="tokens" value="METHOD_DEF" />
<property name="max" value="150" />
module>
<module name="ParameterNumber">
<property name="max" value="10" />
<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"/>
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>
<module name="EmptyStatement"/>
<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>
<module name="MissingSwitchDefault"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
<module name="VisibilityModifier"/>
module>
module>
3.在java文件中 右键选择Check Current File,进行代码检测。
代码规范插件当然还有很多,例如PMD,FindBugs,Jtest等在这读者有兴趣,请自行安装使用。
lombok可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法
官网 https://projectlombok.org/features/index.html
在idea安装了Lombok插件,并在项目中依赖这个Lombok jar,以maven为例:
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
@Getter / @Setter
可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@EqualsAndHashCode
默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。
@ToString
生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。
@Data
@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了。
@Slf4j
提供了日志操作,在代码中直接使用log这个引用即可,例如log.info(…),log.error(…)等等
用法示例如图:
注:idea中快捷键 ALT+7 查看类的字段、属性、方法,是否继承等
将不是驼峰格式的名称,快速转成驼峰格式。选中要修改的名称,按快捷键shift+alt+u。也可以通过不断的快捷键进行你想要的名称进行切换。
可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。但该插件并非免费,故推荐使用Free Mybatis plugin。
Mybatis Plugin插件安装破解及使用:https://blog.csdn.net/u011410529/article/details/54098067
Free Mybatis plugin,让你的mybatis.xml像java代码一样编辑。我们开发中使用mybatis时时长需要通过mapper接口查找对应的xml中的sql语句,该插件方便了我们的操作。
可以让你在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。
GenAllSetter 特性
在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。
按GenAllSetter键两次, 会为Setter方法生成默认值。
可在Intellij Idea中为GenAllSetter设置快捷键。
如何使用:
GenDaoCode 特性
根据Pojo 文件一键生成 Dao,Service,Xml,Sql文件。
Pojo文件更新后一键更新对应的Sql和mybatis xml文件。
提供insert,insertList,update,select,delete五种方法。
能够批量生成多个Pojo的对应的文件。
自动将pojo的注释添加到对应的Sql文件的注释中。
丰富的配置,如果没有配置文件,则会使用默认配置。
可以在Intellij Idea中快捷键配置中配置快捷键。
目前支持MySQL + Java,后续会支持更多的DB。
如果喜欢我们的插件,非常感谢您的分享。
GenDaoCode 使用方法
强大的字符串转换工具。使用快捷键,Alt+m。
一键根据json文本生成java类 。在类的内部,使用快捷键 alt+s
1.在View->Set Background Image进行设置
选择背景图:
这是一款主题插件,可以让你的ide的图标变漂亮,配色搭配的很到位,还可以切换不同的颜色,甚至可以自定义颜色。默认的配色就很漂亮了,如果需要修改配色,可以在工具栏中Tools->Material Theme然后修改配色等。
这是一个将你idea中的所有的进度条都变成萌新动画的小插件。
在编辑代码最右侧,显示一块代码小地图,右侧面板有这个地图,拖动起来更加方便一点
Grep Console 允许您定义一系列的正则表达式,利用它们来对控制台的输出或文件进行测试。每一个表达式匹配的行都会被整行的应用某个样式,或者播放声音。例如,你可以将错误消息设置为以红色的背景来显示。
纯粹为了秀而存在的插件
个人推荐设置:Window–>activate-power-mode–>去掉combo/shake,其他三个全勾上
JRebel是一个提升生产力的工具,它可以帮助开发人员快速的重新加载更改的代码。 它跳过了Java开发中常见的重新构建,重启以及重新部署的循环操作。 JRebel使开发人员能够在相同的时间内完成更多的工作,让开发人员的编码过程变得更加流畅。但该软件是收费的,破解教程:https://my.oschina.net/bluell/blog/1796575
1.用自己下载的tomcat运行项目
2.springboot项目,采用springboot嵌套的tomcat
教程:https://www.jianshu.com/p/bdc88bef0af2
前提是需要网络能正常访问到google。
会对所选择的内容 进行google搜索
Key Promoter X 是一个提示插件,当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么Key Promoter X会在右下角弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。
MyBatis Log Plugin主要作用是把mybatis生成的PreparedStatement语句恢复成原始完整的sql语句。
它将用真实的参数值替换PreparedStatement语句的问号占位符。
通过 “Tools -> MyBatis Log Plugin” 这个菜单可以实时输出sql日志。
点击窗口左边的 “Filter” 按钮,可以过滤不想要输出的sql语句。
点击窗口左边的 “Format Sql” 按钮,可以格式化输出的sql语句
左边几个按钮的作用:
打开.md文件就可以通过一个支持md的视图查看和编辑内容。一般用于写README.md文件。
所在位置Analyze->Calculate Metrics
MetricsReloaded是一个计算代码复杂度即圈复杂度的Jetbrain开源开发的第三方插件。关于代码复杂度,有个维度的衡量,在这里需要普及下软件复杂度的相关知识:基本复杂度(Essential Complexity (ev(G))、模块设计复杂度(Module Design Complexity (iv(G)))、Cyclomatic Complexity (v(G))圈复杂度。
ev(G)基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。因此,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引起其他的错误。
Iv(G)模块设计复杂度是用来衡量模块判定结构,即模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度,因此模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。
v(G)是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验表明,程序的可能错误和高的圈复杂度有着很大关系。
在pom.xml中可以通过Dependencies Analyzer tab页进行查看包冲突,所有依赖的列表展示,以及所有依赖的树状图。并且还可以在All Dependencies as Tree中可以在节点中,可直接移除依赖。
AceJump其实是一款能够代替鼠标的软件,只要安装了这款插件,可以在代码中跳转到任意位置。按快捷键进入 AceJump 模式后(默认是 Ctrl+;),再按任空格,插件就会在屏幕中这个字符的所有出现位置都打上标签,你只要再按一下标签的字符,就能把光标移到该位置上。换言之,你要移动光标时,眼睛一直看着目标位置就行了,根本不用管光标的当前位置。
lantUML是一个快速创建UML图形的组件。但使用前需要安装graphviz,否则在渲染uml时会报错。
前提:你有阿里的云服务或者其他服务。Cloud Toolkit 是本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,您可以将本地应用一键部署到云端(ECS、EDAS 和 Kubernetes 等)和任意服务器;并且它还内置了 Arthas 程序诊断、Dubbo工具、Terminal Shell 终端和 MySQL 执行器等工具。
具体教程:https://www.aliyun.com/product/cloudtoolkit
这里举例:安装后 配置阿里云Host
配置完成后 你可以使用如下常用操作:Upload 上传文件,Terminal 打开终端,Diagnostic 用Arthas 程序诊断。这里也推下arthas,教程移步至https://alibaba.github.io/arthas/
写在最后,在插件名后✔的是本人推荐使用。如果读者仍有优秀的插件可以推荐或者好的建议,希望留下您指间的字,在下方评论,一起完善史上最全系列。