Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Introduce a new variable instead of reusing the parameter "entity"

Tags:

java

sonarqube

I am solving SonarQube issues , in that issues I face an below warning any one please tell me how can i fix it,

Here is my class

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;
    }

In above method i get that warning , will any one please tell me that what is the best approach to solve the above problem.


1 Answers

Assigning a value to a method argument often indicates a bug (even though this is not the case in your example), which is probably why SonarQube gives that warning.

Assuming you have no way of disabling that warning (or you don't want to), you can eliminate it by introducing a new local variable:

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;
}
like image 123
Eran Avatar answered Sep 13 '25 02:09

Eran