【优雅代码】09-idea断点、插件、模板合集

【优雅代码】09-idea断点、插件、模板合集

欢迎关注b站账号/公众号【六边形战士夏宁】,一个要把各项指标拉满的男人。该文章已在github目录收录。
屏幕前的大帅比大漂亮如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要。别下次一定了,都不关注上哪下次一定。

1.背景

用好idea可以辅助程序员更快的开发,从效率和bug上都能取得更优秀的成绩

2.ideaDebug

简单的或者意义不大的就不介绍了

// 测试代码如下
static class TestForIdea {
    public String name;
}

public static int test1() {
    int z = 0;
    for (int i = 0; i < 10; i++) {
        log.info(String.valueOf(i));
        z = i;
    }
    List<Integer> collect = Stream.of(1, 4, 6).filter(a -> (a & 1) == 1).map(a -> a + a)
            .collect(Collectors.toList());
    TestForIdea testForIdea = new TestForIdea();
    testForIdea.name = "1";
    testForIdea.name = "2";
    return z;
}

2.1强制回退

一般调试程序的时候会有错误数据,当已知数据错误的时候为了避免入库可以使用该方法


forceReturn

2.2丢弃当前栈帧并回退

当进入某个method后过了一个断点需要重新观察再次进入该method时可以使用该方案


dropFrame

2.3debug时修改变量

当进入某个method调试时因为过程过于复杂不易于修改源头数据,则可以直接修改最终返回数据即可


setValue

2.4debug时输出表达式

当需要执行复杂代码操作或者查看深层变量可以使用该方法


evaluate

2.5stream流断点

虽然stream流简化了很多代码,但代码调试是真的什么都看不到,用该方法可以将执行链完整显示


TraceCurrentStreamChain

2.6对象属性监控

有时候代码多起来不知道某个值在什么时候变了可以用该方法监控,非常好用


setValue

2.7打印当前栈信息

有些时候某个方法被多个地方调用需要打印栈(调用链)可以使用该方式


printStack1

printStack2

2.8指定属性进入断点

在for循环中经常会值过多找不到特定值,这时候使用该方式精准断点


specialValue

2.9多线程调试

有时候调试多线程需要查看每个线程的运行情况,实际因为并行断点并不能查看每个线程可能就直接过去了,可以采用如下方法


ThreadFrame

但更多的时候需要盯着一个线程看,参考上一个方法


ThreadValue

3.idea设置

  1. 设置悬浮提示
    Preferences | Editor | General | Code Completion->勾选Show quick documentation


    ThreadValue
  2. 自动导入包
    Preferences | Editor | General | Auto Import->勾选Optimize imports on the fly


    ThreadValue
  3. 去掉import *
    Preferences | Editor | Code Style | Java | imports->class count...和 Names count...都改大即可


    import
  4. 设置自定义模板

  • Preferences | Editor | Live Templates->右侧add新增组->然后再新增模板
  • 方法注释
/**
 * description
 * 
$params$
 * @return {@link $returns$}
 * @author seal 876651109@qq.com
 * @date $date$ $time$
 */
Name Expression
params groovyScript("def result=''; def params="${_1}".replaceAll('[\\[ \\] \\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\r\n' : '')}; return result", methodParameters())
returns methodReturnType()
date date()
time time()

因为md格式问题在这里重新输出下params:

groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\\r\\n' : '')}; return result", methodParameters())
  • lombok注释
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@ToString(callSuper = true)
@NoArgsConstructor
@Builder
@JsonInclude(JsonInclude.Include.NON_EMPTY)
  • log日志注释,打印出行号比较省心,不用给每次日志的关键字起名字
log.info("$methodeName$:$line$line:{}","")
Name Expression
methodeName methodeName()
line lineNumber()
  1. 序列化提示
    Preferences | Editor | Inspections | serializable ->勾选class without 'serialVersionUID'


    serializable
  2. properties编码


    propertiesUTF8

    Editor | File Encodings->勾选 Transp....

4.idea插件

这部分推荐的比较少,个人在用的不止这几个

  1. lombok
    主要用@slfj和javaBean相关的注解,插入后可以再用idea反编译成实体代码,非常舒适
  2. free mybaties
    最舒适的功能是辅助检查xml的错误,当然跳转这功能也很给力
  3. alibabacode
    规范代码,每次上线前可以用一下,能处理掉一些bug
  4. maven helper
    maven的优秀伙伴,但是越发觉得maven臃肿了,项目体量一上来jar包冲突惨不忍睹
  5. jclasslib
    学习字节码的好帮手


    ThreadValue

5.idea快捷键

快捷键 介绍
Ctrl + Alt + L 格式化代码,代码就是我们写的诗,至少雷军大大也是这么说的
Ctrl + C CV大法好
Ctrl + V CV大法好
Ctrl + Z 撤销
Ctrl + F 当前页查找
Ctrl +shift+ F 全局查找,还能选正则和文件格式,非常舒心,而且可以查jar包里面的东西
shift+shift 全局查找方法,能查jar包里面的方法,很好用
Ctrl + Alt + 左方向键/右方向键 前进/后退到上一个操作的地方
CTRL+ALT+T 方法块进行try/catch
CTRL+shift+T 创建单元测试

6.idea辅助功能

  1. 查看方法调用链
    导航窗navigate->Call Hierarchy


    ThreadValue
  2. 优化代码
    右键项目->analyze
  3. 查找未使用的方法
    导航窗Analyze->run inspection by name->输入unused declaration
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容