我分析的是前不久写的网络同步绘画服务器端,
分析得出了三个BUG.
BUG 1: Main.java中,BUG原因是外部的程序可以修改对象中的数据,所以不安全,以后注意.
public static Hashtable<String,User> getUsers(){
return users;
}
Public static method may expose internal representation by returning
array
A public static method returns a reference to an array that is part of the
static state of the class. Any code that calls this method can freely modify the
underlying array. One fix is to return a copy of the array.
其实这个方法,在后的程序中有两个地方用了:
out.writeUTF(KEYS.USERS+Main.getUsers().size());
Enumeration<User> ele=Main.getUsers().elements();
修改方法:
将Main.java中的原来方法删除,并添加两个新的方法,OK了!
public static int getUserSize(){
return users.size();
}
public static Enumeration<User> getUsers(){
return users.elements();
}
BUG 2:Clinet.java中,这一个是因为,如果DBS.checkUser(name,pass)抛出异常,那么,user就为null,则抛出NullPointerException
User user=null;
try {
user=DBS.checkUser(name, pass);
if(user==null){
out.writeUTF(KEYS.ERROR+"密码错误");
close();
return;
}
} catch (SQLException e) {
e.printStackTrace();
}
user.setPort(nport);//这一句有BUG.
Possible null pointer dereference in method on exception path
A reference value which is null on some exception control path is
dereferenced here. This may lead to a NullPointerException
when
the code is executed. Note that because FindBugs currently does not prune
infeasible exception paths, this may be a false warning.
Also note that FindBugs considers the default case of a switch statement to
be an exception path, since the default case is often infeasible.
修改办法在e.printStackTrace()之后,加上return;
BUG 3:MyIcon.java没读懂意思,大概是这样退出不好.
item.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);//这一句有BUG
}
});
Method invokes System.exit(...)
Invoking System.exit shuts down the entire Java virtual machine. This should
only been done when it is appropriate. Such calls make it hard or impossible for
your code to be invoked by other code. Consider throwing a RuntimeException
instead.
还不知道具体原因,所以没法修正.
英语差就是不好.
分享到:
相关推荐
FindBugs是一款专门用于Java字节码静态分析的工具,其主要功能在于帮助开发人员提高代码质量并发现潜在的缺陷。该工具通过对类文件或JAR文件进行分析,并将其与一系列预设的缺陷模式进行比对,从而识别出可能存在的...
FindBugs是一款强大的静态代码分析工具,能够帮助开发者发现Java程序中的潜在错误和编程缺陷。它通过分析程序的字节码来查找可能导致错误的行为模式,从而提高代码质量和可维护性。 #### 二、FindBugs安装指南 ###...
findBugs是一款静态代码分析工具,专注于查找潜在的错误和缺陷。它能检测出可能的空指针异常、资源未关闭、并发问题等,帮助开发者预防运行时错误。findBugs的强大之处在于它能够分析代码逻辑,找出那些难以被单元...
总的来说,`findbugs-jmock`作为一个开源项目,不仅丰富了FindBugs的功能,也提升了jMock测试的质量。对于追求代码质量的开发者来说,它无疑是一个值得信赖的伙伴。在实际项目中合理利用这款工具,可以显著提高软件...
Maven是一个项目管理和自动化构建工具,基于项目对象模型(POM)的概念。Maven不仅可以构建Java项目,还可以构建C#、Ruby、Scala等多种语言的项目。Maven主要功能包括项目构建、依赖管理和项目信息管理等。 ### ...
- 运行FindBugs分析,获取结果并进行修正。 #### 三、单元测试 单元测试是保证代码质量的重要手段之一,能够验证代码的基本功能是否按预期工作。JUnit是最常用的Java单元测试框架之一。 1. **编写单元测试**: ...
SonarQube是一个开源平台,主要用于代码质量管理,支持多种编程语言的源代码质量管理和分析。它通过插件机制集成了不同的测试工具、代码分析工具以及持续集成工具,如pmd-cpd、checkstyle、findbugs、Jenkins等。...
本文档将详细介绍如何搭建一个完整的Hudson持续集成环境,并集成了包括SVN、Maven、Checkstyle、PMD、FindBugs等在内的多种工具。 #### 二、安装前的准备与Hudson安装 **1. 安装前的准备** - **JDK安装:** 在...
1. **创建数据库**:首先需要创建一个名为`sonar`的数据库,并设置字符集为UTF-8,确保数据的一致性和正确性。 ```sql CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; ``` 2. **创建用户并...
为了应对这些问题,360手机卫士采取了一系列性能优化措施和工具,具体知识点如下: 1. 功能模块的管理:面对产品经理的不断需求,项目中需要的功能模块众多,这导致优化工作量大增。优化方法之一是进行功能模块的...
【标题】"jacoco-demo" 是一个以Java编写的演示项目,主要展示了如何使用JaCoCo工具进行代码覆盖率统计,并结合SonarQube进行代码漏洞扫描。这个项目旨在帮助开发者理解如何在实际开发中实施代码质量和安全性检查。 ...