Program: 31769
Project: 31769
Buggy source:
/** 
 * To do some auto variable selection like remove ID-like variables, remove variable with high missing rate.
 * @throws IOException any IO exception
 */
private void autoVarSelCondition() throws IOException {
  for (  ColumnConfig config : columnConfigList) {
    if (!config.isTarget() && !config.isMeta() && !config.isForceSelect()&& config.isFinalSelect()&& isHighMissingRateColumn(config)) {
      log.warn("String_Node_Str",config.getColumnName());
      config.setFinalSelect(false);
    }
  }
  if (!ShifuFileUtils.isFileExists(pathFinder.getLocalCorrelationCsvPath(),SourceType.LOCAL)) {
    return;
  }
  BufferedReader reader=ShifuFileUtils.getReader(pathFinder.getLocalCorrelationCsvPath(),SourceType.LOCAL);
  int lineNum=0;
  try {
    String line=null;
    while ((line=reader.readLine()) != null) {
      lineNum+=1;
      if (lineNum <= 2) {
        continue;
      }
      String[] columns=CommonUtils.split(line,"String_Node_Str");
      if (columns != null && columns.length == columnConfigList.size() + 2) {
        int columnIndex=Integer.parseInt(columns[0]);
        ColumnConfig config=this.columnConfigList.get(columnIndex);
        if (config.isFinalSelect() || config.isTarget()) {
          double[] corrArray=getCorrArray(columns);
          for (int i=0; i < corrArray.length; i++) {
            if (config.getColumnNum() < i && columnConfigList.get(i).isFinalSelect()) {
              if (Math.abs(corrArray[i]) > (modelConfig.getVarSelect().getCorrelationThreshold() * 1.000005d)) {
                if (config.isTarget() && columnConfigList.get(i).isFinalSelect()) {
                  log.warn("String_Node_Str",columnIndex,i,i);
                  columnConfigList.get(i).setFinalSelect(false);
                }
 else                 if (config.isFinalSelect() && columnConfigList.get(i).isTarget()) {
                  log.warn("String_Node_Str",columnIndex,i,columnIndex);
                  config.setFinalSelect(false);
                }
 else {
                  if (config.getIv() > columnConfigList.get(i).getIv()) {
                    log.warn("String_Node_Str",corrArray[i],config.getColumnNum(),i,modelConfig.getVarSelect().getCorrelationThreshold(),i);
                    columnConfigList.get(i).setFinalSelect(false);
                  }
 else {
                    log.warn("String_Node_Str",corrArray[i],config.getColumnNum(),i,modelConfig.getVarSelect().getCorrelationThreshold(),config.getColumnNum());
                    config.setFinalSelect(false);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  finally {
    IOUtils.closeQuietly(reader);
  }
}

Fixed version (ground truth):
/** 
 * To do some auto variable selection like remove ID-like variables, remove variable with high missing rate.
 * @throws IOException any IO exception
 */
private void autoVarSelCondition() throws IOException {
  for (  ColumnConfig config : columnConfigList) {
    if (!config.isTarget() && !config.isMeta() && !config.isForceSelect()&& config.isFinalSelect()&& isHighMissingRateColumn(config)) {
      log.warn("String_Node_Str",config.getColumnName());
      config.setFinalSelect(false);
    }
  }
  if (!ShifuFileUtils.isFileExists(pathFinder.getLocalCorrelationCsvPath(),SourceType.LOCAL)) {
    return;
  }
  BufferedReader reader=ShifuFileUtils.getReader(pathFinder.getLocalCorrelationCsvPath(),SourceType.LOCAL);
  int lineNum=0;
  try {
    String line=null;
    while ((line=reader.readLine()) != null) {
      lineNum+=1;
      if (lineNum <= 2) {
        continue;
      }
      String[] columns=CommonUtils.split(line,"String_Node_Str");
      if (columns != null && columns.length == columnConfigList.size() + 2) {
        int columnIndex=Integer.parseInt(columns[0].trim());
        ColumnConfig config=this.columnConfigList.get(columnIndex);
        if (config.isFinalSelect() || config.isTarget()) {
          double[] corrArray=getCorrArray(columns);
          for (int i=0; i < corrArray.length; i++) {
            if (config.getColumnNum() < i && (columnConfigList.get(i).isTarget() || columnConfigList.get(i).isFinalSelect())) {
              if (Math.abs(corrArray[i]) > (modelConfig.getVarSelect().getCorrelationThreshold() * 1.000005d)) {
                if (config.isTarget() && columnConfigList.get(i).isFinalSelect()) {
                  log.warn("String_Node_Str",columnIndex,i,i);
                  columnConfigList.get(i).setFinalSelect(false);
                }
 else                 if (config.isFinalSelect() && columnConfigList.get(i).isTarget()) {
                  log.warn("String_Node_Str",columnIndex,i,columnIndex);
                  config.setFinalSelect(false);
                }
 else {
                  if (config.getIv() > columnConfigList.get(i).getIv()) {
                    log.warn("String_Node_Str",corrArray[i],config.getColumnNum(),i,modelConfig.getVarSelect().getCorrelationThreshold(),i);
                    columnConfigList.get(i).setFinalSelect(false);
                  }
 else {
                    log.warn("String_Node_Str",corrArray[i],config.getColumnNum(),i,modelConfig.getVarSelect().getCorrelationThreshold(),config.getColumnNum());
                    config.setFinalSelect(false);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  finally {
    IOUtils.closeQuietly(reader);
  }
}