首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

添加PMD插件扫描潜在的bug

catch/finally/switch语句 未使用的代码:未使用的局部变量、参数、私有方法等 可选的代码:String/StringBuffer的滥用 复杂的表达式:不必须的if语句、可以使用while循环完成的...for循环 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs 总之,这是一个辅助我们检测潜在bug的工具,大大减少了人工审查成本,提高编码效率。...clone() 方法的类都必须实现 Cloneable, clone() 方法应该调用 super.clone(),而 clone() 方法应该声明抛出 CloneNotSupportedException 异常...,即使实际上没有抛出异常,也要如此。...严格的异常(rulesets/strictexception.xml)—— 针对异常的测试:不应该声明该方法而抛出 java.lang.Exception 异常,不应当将异常用于流控制,不应该捕获 Throwable

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊jedis的borrow行为

异常,跳出循环;只有在不为null且allocate失败的时候会重置为null继续循环;另外如果是create出来的但是activate不成功也会抛出NoSuchElementException异常,跳出循环...)的时候会重新设置null,继续循环idleObjects.pollFirst()为null会触发create,如果还是null则抛出NoSuchElementException(Pool exhausted...)跳出循环;如果blockWhenExhausted为true,block之后获取到的还是null,也会抛出NoSuchElementException(Timeout waiting for idle...,jedis这里只是在db不一样的时候会重新select,默认可以理解为空操作最后是testOnBorrow的逻辑,如果有异常,则针对create出来的则抛出NoSuchElementException...跳出循环,否则重置为null继续循环总结一下就是如果是create有异常(JedisException)则直接抛出,如果borrow不到(即使经过create)也会抛出NoSuchElementException

24131

聊聊jedis的borrow行为

异常,跳出循环;只有在不为null且allocate失败的时候会重置为null继续循环;另外如果是create出来的但是activate不成功也会抛出NoSuchElementException异常,跳出循环...)的时候会重新设置null,继续循环 idleObjects.pollFirst()为null会触发create,如果还是null则抛出NoSuchElementException(Pool exhausted...)跳出循环;如果blockWhenExhausted为true,block之后获取到的还是null,也会抛出NoSuchElementException(Timeout waiting for idle...,jedis这里只是在db不一样的时候会重新select,默认可以理解为空操作 最后是testOnBorrow的逻辑,如果有异常,则针对create出来的则抛出NoSuchElementException...跳出循环,否则重置为null继续循环 总结一下就是如果是create有异常(JedisException)则直接抛出,如果borrow不到(即使经过create)也会抛出NoSuchElementException

16520

DPDK之PMD原理

PMD是Poll Mode Driver的缩写,即基于用户态的轮询机制的驱动。本文将介绍PMD的基本原理。 在不考虑vfio的情况下,PMD的结构图如下: ? 图1....PMD结构图 虽然PMD是在用户态实现设备驱动,但还是依赖于内核提供的策略。...图11.uio_mmap 至此,uio已经可以让PMD的应用层访问设备的大部分资源了。接下来,要转过去看看PMD的应用层。 当DPDK的app启动时,会进行EAL初始化,如下图: ? 图12....如果网卡接收buffer的描述符表示已经完成一个报文的接收(有E1000_RXD_STAT_DD标志),则rte_mbuf_raw_alloc一个mbuf,进行处理。如果没有报文,直接跳出循环。...然后进行报文处理,处理完毕,再次循环。 以上就是PMD的大体流程。

9.1K53

Akka 指南 之「术语及概念」

异步 vs. 同步 如果调用者在方法返回值或引发异常之前无法取得进展,则认为方法调用是同步的。...非阻塞 vs. 阻塞 如果一个线程的延迟可以无限期地延迟其他一些线程,我们将讨论阻塞。一个很好的例子是,一个线程可以使用互斥来独占使用一个资源。...如果一个线程无限期地占用资源(例如意外运行无限循环),则等待该资源的其他线程将无法进行。相反,非阻塞意味着没有线程能够无限期地延迟其他线程。...死锁 vs. 饥饿 vs. 活锁 当几个参与者在等待对方达到某个特定的状态以便能够取得进展时,就会出现死锁(Deadlock)。...死锁与阻塞密切相关,因为参与者线程能够无限期地延迟其他线程的进程。

77160

【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现

,接下来我们就通过循环顺序表来实现顺序队列。   ...顺序循环队列就是将顺序队列设计为在逻辑结构上收尾相接的循环结构,这样我们就可以重复利用存储单元,其过程如下所示: ?...简单分析一下: 其中采用循环结构的顺序表,可以循环利用存储单元,因此有如下计算关系(其中size为队列长度): //其中front、rear的下标的取值范围是0~size-1,不会造成假溢出。...ok~,关于循环结构的顺序队列,我们就分析到此,最后给出循环顺序队列的实现源码,其他方法比较简单,注释也很清楚,就不过多分析了: 1 import java.io.Serializable; 2...null:this.front.data; 94 } 95 96 /** 97 * 返回队头元素,不执行删除操作,若队列为空,抛出异常:NoSuchElementException

1.2K70

五款提升代码质量的IDEA插件,赶紧选择适合你的装上吧!

3、使用说明: 图片 可以看到基本都是一些缩进啥的编码规范,可以不用太关注 三、PMD 1、整体介绍: PMD侧重面向安全编码规则,且具备一定的数据流分析和路径分析能力,能力比CheckStyle稍微强点...,并且 PMD 支持自定义规则,PMD可以直接使用的规则包括以下内容: 潜在的bug:空的try/catch/finally/switch语句 未使用的代码(Dead code):未使用的变量、参数、私有方法等...可选的代码:String/StringBuffer的滥用 复杂的表达式:不必须的if语句、可被while替代的for循环 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs 循环体创建新对象:尽量不要在循环体内实例化新对象...因为在实际工作中,可能需要根据实际情况自定义检测规则,就可以通过这里导入,如果要使用它,需要在启动PMD进行检测时选择该自定义规则。...·································· 你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。

87010

JAVA队列( Queue ) 详解

也就不存在溢出的情况; 只要是阻塞队列,都是线程安全的; 非阻塞队列 不管出列还是入列,都不会进行阻塞, 入列时,如果元素数量超过队列总数,则会抛出异常...阻塞和非阻塞队列在使用上的最大区别就是阻塞队列提供了以下2个方法: 出队阻塞方法 : take() 入队阻塞方法 : put() 有界和无界 有界:有界限,大小长度受限制 无界:无限大小...,其实说是无限大小,其实是有界限的,只不过超过界限时就会进行扩容,就行ArrayList 一样,在内部动态扩容 单向链表和双向链表 单向链表 : 每个元素中除了元素本身之外,还存储一个指针,这个指针指向下一个元素...  remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常   element 返回队列头部的元素 如果队列为空...,则抛出一个NoSuchElementException异常   offer 添加一个元素并返回true 如果队列已满,则返回false   poll 移除并返问队列头部的元素

1.3K20

什么是相干波分复用技术?

强烈缓解分散 当光信号通过光缆传输时,不可避免地会出现光纤损伤,例如色散 (CD)和偏振模色散 (PMD)。...此外,相干处理器提高了偏振相关损耗 (PDL) 的容差并跟踪偏振状态 (SOP) 以避免由于循环跳变而导致的位错误,否则会影响光学性能。...高阶幅度/相位调制 在 2000 年代初期,许多光学实验旨在将每个 WDM 通道的数据速率提高到超过使用 10G直接检测 (IM-DD)可能实现的水平。...相移键控调制,如差分相移键控 (DPSK)和差分正交相移键控 (DQPSK) 受到青睐,因为与 IM-DD 相比,在所需的光信噪比 (OSNR ) 方面具有显着优势) ....另外,相干检测是一个线性过程,可以采用线性均衡来有效补偿CD和PMD。 展望未来 在 WDM 行业中,相干 WDM 技术构成了高效 WDM 传输的基础。

65420

“���”引发的线上事故

由于 Go 1.14 前都无法抢占正在执行无限循环且没有任何函数调用的 goroutine,因此一旦出现死循环,将要进行 GC 的时候,其他所有 goroutine 都会停止,并且都在等着无限循环的 goroutine...只有 dump 数据文件这一个 goroutine 在干活,而且做的又是无限循环,服务整体对外表现就像是“死机”了一样。...服务状态完全恢复正常,唯一不正常的是数据文件无法 dump 下来了,因为即使是 Go 1.14,也依然在执行无限循环,不干“正事”。 接下来的问题就是找到异常的数据了。...异常数据就是:“孙���雷”: ?...但文件太大了,几十个 G, grep 搞不定,没关系,使用 dd 工具: dd if=model_20200423155728 bs=1024 skip=3600000 count=1200 | grep

1K10

【开发工具专题_01】idea集成SonarLint代码质量管理

一.概述 代码质量管理工具,顾名思义就是对你的代码质量进行管理与检测;那么为什么会用到这种工具呢,自然就是提高你的代码规范,比如对格式、变量、异常、语法等都会进行检查,毕竟开发的时候偶尔会出现些代码不规范的问题...二、SonarLint 1.不遵循代码标准检测 通过PMD、CheckStyle、Findbugs等代码规则检测工具,规范代码编写 2.潜在的代码缺陷 通过PMD、CheckStyle、Findbugs...特别是当不可避免地出现人员变动时,程序的可读性大幅下降,而过多的注释又会使得开发人员过多地话费时间在阅读注释上,亦违背初衷 6.缺乏单元测试 可以统计并展示单元测试覆盖率 7.糟糕的设计 通过Sonar可以找出循环

14010

Java 中的队列 Queue

它是基于数组的阻塞循环队列,此队列按 FIFO(先进先出)原则对元素进行排序。...初始化时不需要指定队列的容量,默认是Integer.MAX_VALUE,也可以看成容量无限大。此队列按 FIFO(先进先出)排序元素 。...下面简单介绍一下其中常用的方法: add         增加一个元索                      如果队列已满,则抛出一个IIIegaISlabEepeplian异常    remove...   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常    element  返回队列头部的元素              如果队列为空,则抛出一个...NoSuchElementException异常    offer        添加一个元素并返回true        如果队列已满,则返回false    poll          移除并返问队列头部的元素

54940

p3c 插件,是怎么检查出你那屎山的代码?

源码:https://github.com/alibaba/p3c 插件安装完成后,就可以按照编程规约,静态分析代码中出现的代码:命名风格、常量定义、集合处理、并发处理、OOP、控制语句、注释、异常等各项潜在风险...规约 p3c-pmd 当我们再往下翻看阅读的时候,就看到了一个关于 pmd 的东西。...PMD 是一款采用 BSD 协议发布的Java 程序静态代码检查工具,当使用PMD规则分析Java源码时,PMD首先利用JavaCC和EBNF文法产生了一个语法分析器,用来分析普通文本形式的Java代码...插件是基于 PMD 实现的,更具体的来说是基于 pmd-java 的,因为 PMD 不仅支持 Java 代码分析,还支持其他多种语言。...糟糕的设计:通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。

70740
领券