2016-12-20 3 views
0

Сонар, дающий правонарушение нулевого указателя для нижней строки кода.Сонар нулевой указатель voilation при чтении файла excel

cell1.getRow()

Пожалуйста, не могли бы вы помочь нам разрешить эту проблему.

private List<InvalidUploadedExcelData> validateSheet(Sheet sheet) throws Exception { 

    InvalidUploadedExcelData ITD; 
    ArrayList<InvalidUploadedExcelData> returnedInvalidTestDataList = new ArrayList<InvalidUploadedExcelData>(); 
    Cell cell1, cell2, cell3; 
    for (int i = 1; i < sheet.getRows(); i++) { 
     cell1 = sheet.getCell(0, i); 
     cell2 = sheet.getCell(1, i); 
     cell3 = sheet.getCell(2, i); 

     if ((cell1 == null || StringUtils.isEmpty(cell1.getContents().trim()))) { 
      ITD = new InvalidUploadedExcelData(TITLE_TEST_ID, "Row-" + (cell1.getRow() + 1) + " Column-" + (cell1.getColumn() + 1) + " is missing"); 
      returnedInvalidTestDataList.add(ITD); 
     } else if (!isValidProperty(cell1.getContents().trim())) { 
      ITD = new InvalidUploadedExcelData(TITLE_TEST_ID + ":" + cell1.getContents().trim(), "Row-" + (cell1.getRow() + 1) + " Column-" + (cell1.getColumn() + 1) + " is not valid"); 
      returnedInvalidTestDataList.add(ITD); 
     } 

    } 

    return returnedInvalidTestDataList; 
} 
+1

Удаление несущественных вещей 'if (cell1 == null) {cell1.getRow(); } '. Можете ли вы вызвать метод * any * на 'null'? –

ответ

0

Следующие строки будут вызывать NullPointerException если cell1 фактически нулевой, как вы проверить нуль в состоянии, если-, но вы все-таки войти в отрасль, а затем получить доступ к cell1.getRow() там.

if ((cell1 == null || StringUtils.isEmpty(cell1.getContents().trim()))) { 
     ITD = new InvalidUploadedExcelData(TITLE_TEST_ID, "Row-" + (cell1.getRow() + 1) + " Column-" + (cell1.getColumn() + 1) + " is missing"); 

В этом случае вам нужно будет получить информацию о столбце/столбце по-разному, чтобы быть в безопасности.