findbugs

十年开发经验告诉你需要掌握哪些核心技能

拟墨画扇 提交于 2020-02-27 04:30:59
把编程吃透 程序员(英文 Programmer)是从事程序开发、程序维护的专业人员。 那么作为一名拥有 10 年开发经验的老鸟,我认为程序员最核心的生存技能当然是熟练地掌握一门编程语言。这也是编程初学者最应该注意的,但往往会被忽视。 别的编程语言我不太懂,Java 我是懂的。假如你想把 Java 这门编程语言吃透,我建议你这么做。 轻松驾驭 IDE,比如 Eclipse 和 IDEA。 快速查阅 Javadoc。 掌握流程控制语句。 理解类和对象。 掌握三大特性:封装、继承和多态。 会用接口。 懂得泛型。 掌握异常处理。 熟悉 java.util 和 java.lang 包下的类。 略懂 lambda 表达式和 Stream API。 掌握 IO 流。 会用 Socket 编程。 掌握并发编程。 懂得性能优化。 会用 Junit 等单元测试工具。 会用 Log4J 等日志工具。 熟悉 Mybatis、MySql 和 Spring。 入门 SpringBoot。 熟悉设计模式。 熟练地掌握一门编程语言,就是程序员的立命之本。知道了自己是靠什么吃饭的,就应该在这方面狠下功夫。 2 、巧用数据结构和算法 说起数据结构和算法,我就觉得不好意思,脸上泛起难为情的红晕。但为什么我还要说呢? 因为我深受其苦。 我是一个农村走出来的娃,体会过其中的酸甜苦辣,所以我会奉劝各位

Leader:这样的 Bug 你也写的出来???

老子叫甜甜 提交于 2020-02-26 13:13:23
Hello~各位读者新年好!不知道大家春节假期是否已延长,小黑哥刚接到通知,假期延长到 2 月 2 号,另外回去之后需要在家办公,自行隔离两周。还没试过在家办公,小黑哥就怕到时候生物钟还没调整过来,一觉睡醒已经是下午了。。。 前言 春节假期,还躺在床上小黑哥,收到对账系统的一条预警短信,提示当前系统资金核对存在问题。关于资金的问题,都是大问题,小黑哥连忙拔出电脑,连上 VPN,登录生产环境的查看相关日志。 通过日志,很快小黑哥定位到相关代码。 有的同学可能一下子就能看出这里的问题, Long 对象采用 != 进行比较,这真是一个低级 Bug 。幸好 Leader 还不知道,赶紧悄悄修复一下。 现在回想小黑哥当初写这段代码的时候,误以为两个 Long 对象比较将会进行自动拆箱,转变为两个基本数值类型比较。 下面开始复习一下 Java 自动装箱与拆箱机制。 自动装箱与拆箱机制 自动装箱(Autoboxing),是 JDK5 新增的一种语法糖,将会在代码编译时自动将原始类型转换为其对应的对象包装器类。例如将 int 转换为 Integer , double 转换为 Double 。如果转换结果相反,我们就将其称为拆箱。 下面是一个自动装箱的例子: 上面代码 li.add(i) 就发生自动装箱,将基本数据类型 long 转换为其包装类 Long 。 查看这段代码对应的字节码。

构造函数中可重写的方法调用有什么问题?

回眸只為那壹抹淺笑 提交于 2020-02-26 11:48:13
我有一个Wicket页面类,该类根据抽象方法的结果设置页面标题。 public abstract class BasicPage extends WebPage { public BasicPage() { add(new Label("title", getTitle())); } protected abstract String getTitle(); } NetBeans用消息“构造函数中的可重写方法调用”警告我,但是这有什么问题呢? 我能想到的唯一选择是将其他方法的结果传递给子类中的超级构造函数。 但这可能很难通过许多参数来读取。 #1楼 这是一个示例,揭示了在超级构造函数中调用可重写方法时可能发生的 逻辑问题 。 class A { protected int minWeeklySalary; protected int maxWeeklySalary; protected static final int MIN = 1000; protected static final int MAX = 2000; public A() { setSalaryRange(); } protected void setSalaryRange() { throw new RuntimeException("not implemented"); } public void pr()

为什么Map.get(Object key)不是(完全)泛型的原因是什么

前提是你 提交于 2020-02-25 17:26:49
决定在 java.util.Map<K, V> 接口中没有完全通用的get方法的背后原因是什么? 为了澄清问题,该方法的签名是 V get(Object key) 代替 V get(K key) 我想知道为什么(与 remove, containsKey, containsValue )。 #1楼 这是 Postel法则 的一种应用 , “对您的工作要保守,对别人接受的东西要宽松”。 不论类型如何,都可以执行相等性检查。 equals 方法在 Object 类上定义,并接受任何 Object 作为参数。 因此,对于密钥等效性以及基于密钥等效性的操作来说,接受任何 Object 类型都是有意义的。 映射返回键值时,通过使用type参数,它可以保存尽可能多的类型信息。 #2楼 还有一个重要的原因,因为它破坏了Map,因此在技术上无法完成。 Java具有像 <? extends SomeClass> <? extends SomeClass> 。 标记为此类引用可以指向使用 <AnySubclassOfSomeClass> 签名的类型。 但是多态泛型使该引用 变为只读 。 编译器仅允许您将泛型类型用作方法的返回类型(如简单的getter),但会阻止使用泛型为参数的方法(如普通的setter)。 这意味着您是否编写 Map<? extends KeyType, ValueType> Map

Can sonar catch null pointer exceptions caused by JVM Dynamically

拟墨画扇 提交于 2020-02-06 04:00:10
问题 I would like to ask can sonar find null pointer exception caused by java virtual machine at run time?? if yes please tell me which sonar rule do it for us. I am very much puzzled with it as there are some rules exist in sonar findbugs profile which say sonar catch null pointer exception. One of findbugs rule Avoid Throwing Null Pointer Exception say we should avoid throwing null pointer exception. please clarify me on that can sonar catch null pointer exception or not threw by JVM?? OR it can

IntelliJ如何安装和如何使用FindBug,PMD,CheckStyle以及阿里巴巴编程规范插件

时光怂恿深爱的人放手 提交于 2020-01-31 12:40:15
以下设置建议在intelliJ的默认配置下设置,以节省逐个项目配置的时间 安装FindBugs,CheckStyle,PMD(基于IDEA 15): 1、Access to Files->Settings->Plugins->Browse repositories 2、Search the FindBugs-IDEA and install it. 3、Search CheckStyle-IDEA and install it. 4、Search 来源: CSDN 作者: 阿啄debugIT 链接: https://blog.csdn.net/as4589sd/article/details/104121070

Found reliance on default encoding

痴心易碎 提交于 2020-01-22 04:56:48
问题 I am getting below bug from FindBugs, Found reliance on default encoding in MyClass.print(String): String.getBytes() Method protected void print (String str) { { private OutputStream outStream = null; ..... outStream.write(str.getBytes()); ....... } Please let me know what is the error? how we can resolve this? Thanks in advance 回答1: There are different ways of encoding a String as bytes -- the charset determines that encoding. If you don't specify a charset, as in your call to str.getBytes()

Eclipse中安装和使用FindBugs

情到浓时终转凉″ 提交于 2020-01-17 13:39:26
FindBugs在Eclipse的离线安装: 1 到http://findbugs.sourceforge.net/downloads.html下载20131115123549_nlpir_ictclas2013_u20131115_release.zip,解压后,直接将解压后的edu.umd.cs.findbugs.plugin.eclipse_3.0.1.20150306-5afe4d1放到eclipse的plugins目录,然后重启eclipse皆可,如下图所示: 2 注意了,这里要求的是eclipse3.6及以上的版本,按理说猿基本都能跟上潮流的。可以查看下自己的eclipse版本确认下(Help->About Eclipse),如下图所示: END FindBugs在Eclipse的在线安装: 1 点击“Help->InstallNew Software”,如下图所示: 2 接着如下图所示: 3 Name”输入“findBugs”,“Location”输入“http://findbugs.cs.umd.edu/eclipse” 如下图所示: 4 接着选择对应插件如下图所示: 5 后面的是下一步,下一步就可以了,在线安装可能需要等待比较长的时间,耐心等待,不要中断! 后面会提示你重启eclipse,重启后就可以使用了。 END FindBugs在Eclipse的使用

Eclipse FindBugs插件

家住魔仙堡 提交于 2020-01-17 13:39:09
在线安装: Update Site: http://findbugs.cs.umd.edu/eclipse 本地安装: 1、首先从findbugs网站下载插件:http://findbugs.sourceforge.net/downloads.html 2、将下载回来的zip包解压,findbugs插件和一般的插件不太一样,一般的插件安装包解压后里面一般是包含plugins和features两个文件夹,我们只需要把这两个文件夹下的jar包或文件夹拷贝到Eclipse或MyEclipse安装路径下对应的plugins和features文件夹中就OK了。但是findbugs插件压缩包解压到myeclipse和Eclipse安装目录下plugins目录下。 使用: 重启myeclipse和Eclipse,选中项目,右键会出现一个Find Bugs菜单,点击“Find Bugs”,开始扫描项目存在的Bug。 缺陷视图:Window——Show View——Find Bugs——Bug Explorer 缺陷树: 我们可以看到,Find Bugs对缺陷进行了分类,双击叶子节点可以定位具体代码;右击叶子节点,可通过“Show Bug Info”查看详细信息,我们可以根据此提示来修正缺陷。 参考: < http://chenzhou123520.iteye.com/blog/1313565 >

Eclipse的FindBugs插件

﹥>﹥吖頭↗ 提交于 2020-01-17 13:38:47
Eclipse的FindBugs插件 问题提出: 当我们编写完代码,做完单元测试等各种测试后就提交正式运行,只能由运行的系统来检测我们代码是否有问题了,代码中隐藏的错误在系统运行的过程中被发现后,然后再来进行相应的修改,那么后期修改的代价就相当高了。 解决方法: 现在有很多Java代码分析工具,FindBugs中开源项目当中的一个,它可以帮你找到代码中隐藏的一些错误,提升你的代码能力与系统安全可靠性。 安装 JDK:1.5.0 从http://java.sun.com上去下载安装 Eclipse:3.1.1 从http://www.eclipse.org 上去下载解压 FindBugs:0.9.4 从http://findbugs.sourceforge.net/ 官方的文档 http://findbugs.sourceforge.net/manual/ Eclipse plugin for FindBugs version 0.0.17 从 http://findbugs.sourceforge.net/downloads.html 下载 插件管理技巧 提示:新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去。 前提是你已经安装好了Eclipse工具了,比如安装在E:\OpenSource\Eclipse\目录下,以下这个目录以%ECLIPSE_HOME