2013-03-13 2 views
2

Findbugs on int i으로 DeadStore 경고가 표시됩니다. 가독성으로 인해 하나의 라이너를 쓰지 않는 것이 좋습니다. DeadStore가 i에 없도록 읽을 수있는 좋은 방법이 있습니까?FindBugs Dead Store 경고 - 코드를 재구성하거나 경고를 무시해야합니까?

// Just validate 
Integer.parseInt(aqForm.getId()); 

그것은 명확한 이유를 보다는 검증되지 한 당신의 버전을 트리밍하고 아니에요 :

if (aqForm.getId() != null) { 
     try { 
      int i = Integer.parseInt(aqForm.getId()); 
      aqForm.setId(aqForm.getId().trim()); 
     } catch (NumberFormatException nfe) { 
      result.rejectValue("id", "error.id", "Please enter an integer."); 
      foundError = true; 
     } 
    } 

답변

3

i에 지정할 필요가 없습니다. 당신은 parseInt()를 호출하고 결과를 무시할 수 :과 같이 당신의 조각을

public static boolean isValidInteger(String str) { 
     ... 
    } 

및 재 작성 : 말했다

if (aqForm.getId() != null) { 
     try { 
      Integer.parseInt(aqForm.getId()); // validate by trying to parse 
      aqForm.setId(aqForm.getId().trim()); 
     } catch (NumberFormatException nfe) { 
      result.rejectValue("id", "error.id", "Please enter an integer."); 
      foundError = true; 
     } 
    } 

, 내가 도우미 함수를 만들 것이라고 나는 것을 고려

String id = aqForm.getId(); 
    if (id != null) { 
     if (isValidInteger(id)) { 
     aqForm.setId(id.trim()); 
     } else { 
     result.rejectValue("id", "error.id", "Please enter an integer."); 
     foundError = true; 
     } 
    } 
+0

@EdgeCase : 그렇지 않습니다. 사실, 이것은 처음에는 가지고 있었지만 편집되었습니다. 내 이유는 내가 보여준 코드가 기능적으로 코드와 같지 않았기 때문입니다. (내 코드는 조용히 'null'을 허용합니다. 반면에 내 코드는 불평 할 것입니다.) – NPE

5

그냥 이유를 설명하기 위해 이상적으로 주석이 메서드를 호출하고 결과를 무시 버전 이 있습니다. 내가 원하는 :

String id = aqForm.getId(); 
if (id != null) { 
    try { 
     id = id.trim(); 
     // Validate the ID 
     Integer.parseInt(id); 
     // Store the "known good" value, post-trimming 
     aqForm.setId(id); 
    } catch (NumberFormatException nfe) { 
     result.rejectValue("id", "error.id", "Please enter an integer."); 
     foundError = true; 
    } 
} 
+0

을 ,하지만 Netbeans은 변수에 parseInt()를 할당하는 것에 대해 신경 쓰지 않습니다. 나는 FindBugs 대신 Netbeans를 무시할 것입니다. – EdgeCase