FindBugs规则整理中文版讲解.doc
文本预览下载声明
FindBugs1.3.9规则整理
FindBugs1.3.9规则整理
Findbugs中把影响代码质量分为以下几个部分:
Security 关于代码安全性防护
序号 Description 备注 Dm: Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD)
代码中创建DB的密码时采用了写死的密码。 Dm: Empty database password (DMI_EMPTY_DB_PASSWORD)
创建数据库连接时没有为数据库设置密码,这会使数据库没有必要的保护。 HRS: HTTP cookie formed from untrusted input (HRS_REQUEST_PARAMETER_TO_COOKIE)
此代码使用不受信任的HTTP参数构造一个HTTP Cookie。 HRS: HTTP Response splitting vulnerability (HRS_REQUEST_PARAMETER_TO_HTTP_HEADER)
在代码中直接写入一个HTTP头,它为HTTP响应。 SQL: Nonconstant string passed to execute method on an SQL statement (SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE)
该方法调用statement的execute方法,它似乎是动态生成SQL语句的方法。更容易受到SQL注入攻击。 XSS: JSP reflected cross site scripting vulnerability (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)
在代码JSP输出直接写入一个HTTP参数,。 LG: Potential lost logger changes due to weak reference in OpenJDK (LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)
OpenJDK的引入了一种潜在的不兼容特别是,java.util.logging.Logger的行为。它现在使用内部弱引用而不是强引用。–,这是一个合理的变化,但不幸的是一些代码对旧的行为依赖。这意味着,垃圾收集配置将会丢失。public static void initLogging() throws Exception {
Logger logger = Logger.getLogger(edu.umd.cs);
logger.addHandler(new FileHandler()); // call to change logger configuration
logger.setUseParentHandlers(false); // another call to change logger configuration
}
该方法结束时logger的引用就丢失了,如果你刚刚结束initLogging方法后进行垃圾回收,配置将会丢失(因为只有保持记录器弱引用)。
public static void main(String[] args) throws Exception {
initLogging(); // adds a file handler to the logger
System.gc(); // logger configuration lost
Logger.getLogger(edu.umd.cs).info(Some message); // this isnt logged to the file as expected
}
OBL: Method may fail to clean up stream or resource (OBL_UNSATISFIED_OBLIGATION)
这种方法可能无法清除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动。
一般来说,如果一个方法打开一个流或其他资源,该方法应该使用try / finally块确保流或资源。这种错误模式基本上OS_OPEN_STREAM和ODR_OPEN_DATABASE_RESOURCE错误模式,但是是在不同静态分析技术。我们正为这个错误模式的效用反馈意见。Bad practice代码实现中的一些坏习惯
序号Description 备注 AM: Creates an empty jar file entry (AM_CREATES_EMPTY_JAR_FILE_ENTRY)
调用putNextEntry()方法写入
显示全部