引入一个新变量而不是重用参数“entity”

时间:2017-08-21 07:25:26

标签: java sonarqube

我正在解决SonarQube问题,在这个问题中我面临以下警告任何人请告诉我如何解决它,

这是我的班级

public static Agency updateEntity(AgencyModel model, Agency entity) {

        if (model == null || entity == null) {
            return null;
        }

        if (entity.getAgencyId() != model.getAgencyId()) {
            entity = new Agency()


// for the above variable 'entity' i get the warning, "Introduce a new
    variable instead of reusing the parameter "entity".


    }

        entity.setAgencyId(model.getAgencyId());
        if (entity.getAgencyLogoLarge() == null) {
            entity.setAgencyLogoLarge(new File());
        }
        entity.setAgencyLogoLarge(FileModel.updateEntity(model.getAgencyLogoLarge(), entity.getAgencyLogoLarge()));
        if (entity.getAgencyLogoSmall() == null) {
            entity.setAgencyLogoSmall(new File());
        }
        entity.setAgencyLogoSmall(FileModel.updateEntity(model.getAgencyLogoSmall(), entity.getAgencyLogoSmall()));
        entity.setAgencyName(model.getAgencyName());
        entity.setContactPersons(
                AgencyContactPersonModel.updateEntities(model.getContactPersons(), entity.getContactPersons()));
        entity.setOtherDetails(model.getOtherDetails());
        entity.setClassification(ClassificationModel.updateEntity(model.getClassification(), entity.getClassification()));
        entity.setStatus(entity.getStatus());
        entity.setCreatedBy((model.getCreatedBy() != null && model.getCreatedBy() != 0) ? model.getCreatedBy()
                : entity.getCreatedBy());
        entity.setUpdatedBy((model.getUpdatedBy() != null && model.getUpdatedBy() != 0) ? model.getUpdatedBy()
                : entity.getUpdatedBy());
        entity.setUpdatedDate(new Date());
        entity.setStatus(Constant.ACTIVE);

        return entity;
    }

在上面的方法中,我得到了警告,任何人都请告诉我解决上述问题的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

为方法参数赋值通常表示存在错误(即使在您的示例中不是这种情况),这可能是SonarQube发出警告的原因。

假设你无法禁用该警告(或者你不想),你可以通过引入一个新的局部变量来消除它:

public static Agency updateEntity(AgencyModel model, Agency entity) {

    Entity result;

    if (model == null || entity == null) {
        return null;
    }

    if (entity.getAgencyId() != model.getAgencyId()) {
        result = new Agency();
    } else {
        result = entity;
    }

    ... use result variable instead of entity variable ...

    return result;
}