ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] [https://www.cnblogs.com/jajian/p/8081658.html](https://www.cnblogs.com/jajian/p/8081658.html) # Alibaba Java Code Guidelines 阿里巴巴java开发手册使用 http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/ 阿里巴巴java开发手册使用 https://segmentfault.com/a/1190000011730490 **在文件夹或者文件上右击编码归约扫描** 扫描代码后,将不符合规约的代码按 **Blocker/Critical/Major** 三个等级显示在下方,双击可以定位至代码处,右侧窗口还有针对代码的批量修复功能 ![](https://img.kancloud.cn/f7/7e/f77ef5ce01c2e2bcc65e248d855d5598_1225x614.png) 解释下**Blocker/Critical/Major**三个等级, 在 Snoar 中对代码规则有五个级别,这是前三个:崩溃/严重/重要 ,也就是说前两级别是必须要处理掉的。 # maven-helper插件 安装Plugins,装完重启IDE maven helper 打开pom文件,并可以切换tab,简单使用,如下图 ![](https://box.kancloud.cn/835a5b22133d2861f13f2aec6ef5dcf1_513x563.png) 显示依赖树 打开pom文件,然后右键: ![](https://box.kancloud.cn/f8706a6fb9cfe5825c1524c7935e0b41_526x315.png) 如果有依赖冲突的话,显示的是显示为红色 可以command+f搜索 命令行就是`mvn dependency:tree` ![](https://box.kancloud.cn/d1c12752f8ede83dea0c62e4f1fb9a75_879x556.png) ![](https://box.kancloud.cn/be747619b37a256b3526a8a62dc23588_823x646.png) 通过idea的maven依赖分析将不需要的依赖exclude掉 ![](https://box.kancloud.cn/f6440b53d382413d46be466aa4a3671a_363x267.png) 官方地址: https://plugins.jetbrains.com/plugin/7179-maven-helper # GsonFormat插件 也有在线版本的:[https://www.bejson.com/json2javapojo/new/](https://www.bejson.com/json2javapojo/new/) Java开发中,经常有把json格式的内容转成Object的需求,GsonFormat这款插件可以实现该功能。 command+n调出下面的对话框 ![](https://box.kancloud.cn/5f5f3e2fed125e60e270dee676bd4750_536x455.png) 然后粘贴json ![](https://box.kancloud.cn/62a8f982c0ffa812401e8fe7c9eddf35_921x601.png) 然后点击ok到下一层 ![](https://box.kancloud.cn/ed331931a849daa6f54ec22b25feefe7_901x567.png) 这边是可以编辑的 官方地址: https://plugins.jetbrains.com/plugin/7654-gsonformat # FindBugs-IDEA插件 代码分析工具,可发现代码中潜在BUG和不规范之处,有利于提高代码质量。右键即可选择要扫描的范围,可在FindBugs-IDEA控制台查看扫描结果并根据code bug级别选择修复 ![](https://box.kancloud.cn/79569839f4abd9021504686da33e0235_904x531.png) **结果分析** ~~~tsx 1. Bad practice 坏的实践 一些不好的实践,下面列举几个: 1)类定义了equals(),却没有hashCode();。 2)Statement 的execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。 3)方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。 2. Correctness 一般的正确性问题 可能导致错误的代码,下面列举几个: 1)空指针被引用;在方法的异常路径里,空指针被引用;方法没有检查参数是否null;null值产生并被引用;null值产生并在方法的异常路径被引用;传给方法一个声明为@NonNull的null参数;方法的返回值声明为@NonNull实际是null。 2)类定义了hashcode()方法,但实际上并未覆盖父类Object的hashCode();类定义了tostring()方法,但实际上并未覆盖父类Object的toString();很明显的方法和构造器混淆;方法名容易混淆。 3)方法尝试访问一个Prepared Statement的0索引;方法尝试访问一个ResultSet的0索引。 4)所有的write都把属性置成null,这样所有的读取都是null,这样这个属性是否有必要存在;或属性从没有被write。 3. Internationalization 国际化 当对字符串使用upper或lowercase方法,如果是国际的字符串,可能会不恰当的转换。 4. Malicious code vulnerability 恶意代码 如果代码公开,可能受到恶意攻击的代码,下面列举几个: 1)一个类的finalize()应该是protected,而不是public的。 2)属性是可变的数组;属性是可变的Hashtable;属性应该是package protected的。 5. Multithreaded correctness 多线程的正确性 多线程编程时,可能导致错误的代码,下面列举几个: 1)ESync:空的同步块,很难被正确使用。 2)MWN:错误使用notify(),可能导致IllegalMonitorStateException异常;或错误的 使用wait()。 3)使用notify()而不是notifyAll(),只是唤醒一个线程而不是所有等待的线程。 4)构造器调用了Thread.start(),当该类被继承可能会导致错误。 6. Performance 性能问题 可能导致性能不佳的代码,下面列举几个: 1)DM:方法调用了低效的Boolean的构造器,而应该用Boolean.valueOf(…);用类似 Integer.toString(1) 代替new Integer(1).toString();方法调用了低效的float的构造器,应该用静态的valueOf方法。 2)SIC:如果一个内部类想在更广泛的地方被引用,它应该声明为static。 3)SS: 如果一个实例属性不被读取,考虑声明为static。 4)UrF:如果一个属性从没有被read,考虑从类中去掉。 5)UuF:如果一个属性从没有被使用,考虑从类中去掉。 7. Dodgy 不符合规范的,有潜在危险的 具有潜在危险的代码,可能运行期产生错误,下面列举几个: 1)CI: 类声明为final但声明了protected的属性。 2)DLS:对一个本地变量赋值,但却没有读取该本地变量;本地变量赋值成null,却没有读取该本地变量。 3)ICAST: 整型数字相乘结果转化为长整型数字,应该将整型先转化为长整型数字再相乘。 4)INT:没必要的整型数字比较,如X <= Integer.MAX_VALUE。 5)NP: 对readline()的直接引用,而没有判断是否null;对方法调用的直接引用,而方法可能返回null。 6)REC:直接捕获Exception,而实际上可能是RuntimeException。 7)ST: 从实例方法里直接修改类变量,即static属性。 ~~~ 官方地址: https://plugins.jetbrains.com/plugin/3847-findbugs-idea # .ignore插件 地址:https://plugins.jetbrains.com/plugin/7495--ignore 生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写 # visualVM Launcher 地址:https://plugins.jetbrains.com/plugin/7115-visualvm-launcher 运行java程序的时候启动visualvm,方便查看jvm的情况 比如堆内存大小的分配 某个对象占用了多大的内存,jvm调优必备工具 # GenerateAllSetter插件 ![](https://img.kancloud.cn/d4/5d/d45d95d93a08dc68dac534aae01c19a1_752x166.png) 地址:https://plugins.jetbrains.com/plugin/9360-generateallsetter 一键调用一个对象的所有set方法并且赋予默认值 在对象字段多的时候非常方便 # MyBatisCodeHelperPro插件 地址:https://plugins.jetbrains.com/plugin/9837-mybatiscodehelperpro mybatis代码自动生成插件,大部分单表操作的代码可自动生成 减少重复劳动 大幅提升效率 视频: https://www.bilibili.com/video/av23458308/ # Rainbow Brackets插件 地址:https://plugins.jetbrains.com/plugin/10080-rainbow-brackets 彩虹颜色的括号 看着很舒服 敲代码效率变高 ![](https://box.kancloud.cn/537d06f66d6cc98a8eec839487352694_915x262.png) # Power Mode II ![](https://img.kancloud.cn/da/c8/dac8a67ab65366bc9d4697d98d74e350_1068x1230.png) # Translation [http://yiiguxing.github.io/TranslationPlugin/start.html](http://yiiguxing.github.io/TranslationPlugin/start.html) 翻译插件 translate.google.com在国内是需要VPN才能访问的 1. 申请有道智云翻译服务(可选) * 注册[有道智云](http://ai.youdao.com/)帐号并获取其**应用ID**和**密钥** * 绑定**应用ID**和**密钥**:Preferences(Settings) > \[Other Settings\] > Translation > 有道翻译 注:请注意保管好你的应用密钥,防止其泄露。如帐号欠费,将无法使用。 2. 申请百度翻译服务(可选) * 注册[百度翻译开放平台](http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer)帐号并获取其**应用ID**和**密钥** * 绑定**应用ID**和**密钥**:Preferences(Settings) > \[Other Settings\] > Translation > 百度翻译 注:请注意保管好你的应用密钥,防止其泄露。如帐号欠费,将无法使用。 3. 开始翻译 选择文本或者鼠标指向文本 > 单击鼠标右键 > Translate 或者使用快捷键进行翻译,详见[Actions](http://yiiguxing.github.io/TranslationPlugin/start.html#actions). # mongo4idea mongo客户端 https://github.com/dboissier/mongo4ideaiedis # redis https://plugins.jetbrains.com/plugin/9228-iedis 还有个iedis2要收费 # PlantUML插件 如果不想装graphviz,想直接用, 可以下载chrome插件PlantUML Viewer, 安装之后直接编辑文本,可以在浏览器直接显示 --- 还有个SequenceDiagram 时序图插件,没用的起来 # Settings Sync plugin设置共享 在开始使用 Settings Sync 之前,请确保**Settings Sync**插件已启用 如果要共享 IDE 设置,请执行以下步骤: 1. 登录以下任一项: * 您的 IDE:从主菜单中选择 **Help | Register**,选择使用 [JetBrains 帐户](https://sales.jetbrains.com/hc/en-gb/articles/208459005-What-is-JetBrains-Account-) 激活您的许可证并输入您的凭据。 * [Toolbox App](https://www.jetbrains.com/toolbox/app/):单击应用程序右上角的齿轮图标,然后选择 **Settings** 并单击 **Log in** 按钮。请注意,通过登录 Toolbox App,您将自动登录到您运行的所有 JetBrains 产品。 2. 在 IntelliJ IDEA 窗口的右下角,单击齿轮图标并选择 **Enable Settings Sync**。您的本地设置将导出到关联您的帐户的 JetBrains 存储库。 3. 如果想要自动同步所有已启用和已禁用插件的列表,请选择 **Sync plugins silently** 选项。有关如何禁用手动同步插件的说明,请参阅 [Sync plugins](https://www.jetbrains.com/help/idea/sharing-your-ide-settings.html#sync-plugins)。 4. 在要应用这些设置的其他计算机上,单击齿轮按钮并选择 **Enable Sync**。在打开的对话框中,单击 **Get Settings from Account** 以从存储库导入设置。如果要使用本地设置覆盖存储库,请单击 **Keep and Sync Local Settings**。 每次运行不同的 IDE 实例时(或者在超过一小时不活动后激活它),或者当任何这些设置被修改并且已应用此更改时,本地设置将自动与存储在存储库中的设置同步。 **Sync plugin** 安装或卸载插件或更改其状态(启用/禁用)时,可以将这些更改应用于所有 IDE 安装。 如果想要在 IDE 实例之间自动同步插件,请在启用设置同步时选择 **Sync plugins silently** 选项。 手动同步插件的步骤: 1. 在 IntelliJ IDEA 窗口的右下角,单击齿轮图标并选择 **Sync Plugins**。 2. 打开一个对话框,显示自上次同步以来修改的所有插件的列表。单击每个插件旁边的箭头按钮,然后选择修改插件的状态、将存储库状态应用于所有安装、在本地跳过此更改或跳过所有 IDE 实例。 3. 在为每个插件选择了要执行的操作后,单击 **Apply Changes**。 # CamelCase插件 1. 安装方法 idea菜单栏-file-settings-搜索"plugins"-点击下面按钮‘browse repositories‘-搜索“CamelCase”-点击安装 2. 使用方法 安装后重新打开idea,选中内容,快捷键shit+alt+u,选中内容中的单词 就会变,直到变成你想要的。必须要字符串本来就是下划线或者驼峰这些类型,username不行,userName可以 这个真的很方便,特别是mysql数据库字段带下划线 直接复制字段到java,开发很快! # CheckStyle代码风格检查 配个google stype,也可以自定义code style,然后对整个项目检查 # grep console ![](https://img.kancloud.cn/12/07/1207f20aaa2d898c483720b2f939be98_2102x736.png) 并且可以设置不同的日志级别的显示样式 ![](https://img.kancloud.cn/08/e7/08e70abcfb5270942d43287000df543c_2354x1100.png) 设置下背景色 # MyBatis Log Plugin Mybatis现在是java中操作数据库的首选,在开发的时候,我们都会把Mybatis的脚本直接输出在console中,但是默认的情况下,输出的脚本不是一个可以直接执行的。 **配置打印日志参数,注意,如果这里不使用日志打印的话那个插件的功能是无法使用的。这里是非常重要的配置。** ![](https://img.kancloud.cn/0d/02/0d02250e51dacc6586073b4452a73eac_703x171.png) 在idea的tool里面 ![](https://img.kancloud.cn/79/bb/79bbf124d6d318f7c405ff3d1bfbe95a_511x378.png) 单击,窗口就出来了.接下来我们使用工具时,只要控制台有sql打印,我们的mybatis sql log 就会自动帮大家把sql和参数进行拼装 ![](https://img.kancloud.cn/ca/f2/caf24ed3a1236fd280e457ddd69f6b22_811x313.png) # ResfulTookit 一套 RESTful 服务开发辅助工具集。 1. 根据 URL 直接跳转到对应的方法定义 ( or Ctrl Alt N ); 2. 提供了一个 Services tree 的显示窗口; 3. 一个简单的 http 请求工具; 4. 在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数... 5. 其他功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。 根据 URL 直接跳转到对应的方法定义 ( Ctrl \\ or Ctrl Alt N ); ![](https://img.kancloud.cn/a0/b5/a0b50e5420616938aba82ce7728980ac_418x234.png) **接口测试** RestfulToolkit另外还提供一个强大的功能,它会根据我们的controller提供的方法,自动生成请求数据。那在我们使用postman测试接口时方便了很多。 ![](https://img.kancloud.cn/7c/ab/7cab1a1d9eb8458e8d53ea03d50e0178_966x893.png) # jenkins control plugin ![](https://img.kancloud.cn/4a/13/4a1385689b95cf36558413ca638923d4_518x292.png) **建议:**如果启用 CSRF的话(默认启用),到 系统管理 -> Configure Global Security(全局安全配置)中, 勾选下图选项. ![](https://img.kancloud.cn/67/a8/67a874f3c9ba33a74e6566cc6db06431_629x139.png) 注意:如果你用的是 jenkins 2, 并且启用了 CSRF(防止跨站点请求伪造),需要填 Crumb Data, 这个可以通过以下url获取: [http://localhost:8080/crumbIssuer/api/xml?tree=crumb#](http://http//localhost:8080/crumbIssuer/api/xml?tree=crumb#) ![](https://img.kancloud.cn/62/d2/62d2716dbc8e5a0ecbec1b9b5186dbcd_496x451.png) 说明:本页面内容不可复制,可通过鼠标右键》查看网页源代码获取,将crumb值填入第二张图idea设置的Crumb Data中   不建议:如果不启用 CSRF的话(默认启用),到 系统管理 -> Configure Global Security(全局安全配置)中, 取消勾选下图选项 ![](https://img.kancloud.cn/74/82/74829b1c928e5e9cd884e0182aa18d31_352x137.png) 说明:如果不启用 CSRF的话,第二张图idea设置的Crumb Data则不用填 进行到此处已经集成完成,可以愉快的玩耍了,嘿嘿。 1. Go to View->Tools&Windows->Jenkins,打开右侧边栏的 Jenkins 工作台。 2. 到你的jenkins 服务器浏览器页面上,手动创建一个简单的Job,回到Intellij, 刷新下,应该就可以看到这个job了 ![](https://img.kancloud.cn/d7/c6/d7c68e092608cf9bba3f4c205a42976a_264x120.png) # CodeGlance侧边地图插件