博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pmd 代码检查
阅读量:6590 次
发布时间:2019-06-24

本文共 2310 字,大约阅读时间需要 7 分钟。

  hot3.png

pmd 代码检查
不要在循环中创建变量Avoid instantiating new objects inside loops
 private static List<MetricDataPojo> buildeMetricData(final String monitorId,
            final StateType stateType) {
        List<MetricDataPojo> result = new ArrayList<MetricDataPojo>();
        
for
 (RoomPojo room : ResCache.
getRoomCache
().values()) {
            if (!room.getMonitorId().equals(monitorId)) {
                continue;
            }
            MetricDataPojo metricData = new MetricDataPojo();
            metricData.setMetricId("ping");
            metricData.setMonitorId(monitorId);
            metricData.setRoomId(room.getId());
            metricData.setValue(stateType.getId());
            metricData.setTime(
new
 Date()
);
            result.add(metricData);
        }
        return result;
    }  

避免过早定义变量【定义靠近使用的地方】Avoid declaring a variable if it is unreferenced before a possible exit point.

22191440_sGCg.png

Variables that are final and static should be all capitals, 'logger' is not all   

 private static final Logger logger = LoggerFactory.getLogger(CacheManager.class);  

Use block level rather than method level synchronization  

 public synchronized Cache registerCache(  

 Local variable 'serviceLoader' could be declared final 

 CacheLoader<Class<S>, S> serviceLoader = new CacheLoader<Class<S>, S>()  
 
A class which only has private constructors should be final
App.java
Avoid variables with short names like 'sb'
Avoid if (x != y) ..; else ..;
JUnit tests should include assert() or fail()
publicMethodCommentRequirement Required
StringBuffer链式调用
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
默认16
StringBuffer constructor is initialized with size 16, but has at least 417 characters appended.
ModelServiceGenerator.java
22191440_Mvnl.png
Substitute calls to size() == 0 (or size() != 0) with calls to isEmpty()【区别是?】

System.out.print is used

for (File file : files) {
            System.out.println(file.getName());
        }  

先写正常流Avoid if (x != y) ..; else ..;

if (existNode != null) {
                node.setId(existNode.getId());
                if (!existNode.equals(node)) {
                    service.modifySelective(node);
                }
            } else {
                toAdd.add(node);
            }  

SimplifyBooleanReturns: Avoid unnecessary if..then..else statements when returning a boolean.

解决方案  简化布尔量的返回:避免在返回布尔量时写不必要的if..then..else表达式。

代码示例:

public class Foo {

  private int bar =2;

  public boolean isBarEqualsTo(int x) {

    // this bit of code

    if (bar == x) {

     return true;

    } else {

     return false;

    }

    // 上面可以简化为:

    // return bar == x;

  }

}

转载于:https://my.oschina.net/itnms/blog/418772

你可能感兴趣的文章
squirrelmail+change_sqlpass 认证 问题
查看>>
hive优化--增加减少map数
查看>>
重建二叉树
查看>>
ERP计划参数如何在线更新
查看>>
3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
查看>>
LVS+Keepalived实现高可用集群
查看>>
我的友情链接
查看>>
hadoop管理命令——fsck
查看>>
我的友情链接
查看>>
unbantu安装 mysql --- 百度云
查看>>
sql2008性能计数器注册表配置单元一致性失败
查看>>
LNMP环境搭建
查看>>
我的友情链接
查看>>
学习linux—— 磁盘相关指令
查看>>
词法分析与语法分析简介
查看>>
JS中的默认行为
查看>>
我的友情链接
查看>>
Checkio代码闯关小计
查看>>
从oracle到mysql,主从到分库,一个普通项目数据库架构的变迁
查看>>
从零开始学wordpress 之四
查看>>