安全性 - 数组直接存储

Mau*_*zey 4 java findbugs sonarqube

我甚至提到:声纳违规:安全 - 数组直接存储

我的代码是--->

    public final void setSelectedObjectsList(final ScheduleDTO[] selectedObjectsList) 
               //      Security - Array is stored directly    
               //The user-supplied array 'selectedObjectsList' is stored directly.      
{
            if (selectedObjectsList != null) {
                this.selectedObjectsList = selectedObjectsList.clone();
            } else {
                this.selectedObjectsList = null;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这已经在处理防御性复制,为什么声纳会在功能参数上对我大吼大叫.

这不像Sonar Violation那样重复 :安全 - 数组直接存储

再次,谢谢你的呐喊和时间.

Juk*_*kka 6

不知道Sonar在想什么,但防御性的浅层复制clone()应该可以正常工作,就像Arrays.copyOfSystem.arrayCopy().

另一方面,由于您已经在调用数组列表:selectedObjectsList,您还可以将其设为实际列表并重构一下:

public final void setSelectedSchedules(List<ScheduleDTO> selectedSchedules) {
    this.selectedSchedules = selectedSchedules != null ? new ArrayList<ScheduleDTO>(selectedSchedules) : null;
}
Run Code Online (Sandbox Code Playgroud)

  • +1.当你使用它时,使用空数组或列表是一种不好的做法.这些永远不应该为空.空的,是的.空,不. (6认同)