Program: 31813
Project: 31813
Buggy source:
public EvalNormUDF(String source,String pathModelConfig,String pathColumnConfig,String evalSetName) throws IOException {
  super(source,pathModelConfig,pathColumnConfig);
  evalConfig=modelConfig.getEvalConfigByName(evalSetName);
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getHeaderPath())) {
    if (StringUtils.isNotBlank(evalConfig.getDataSet().getHeaderPath())) {
      String delimiter=StringUtils.isBlank(evalConfig.getDataSet().getHeaderDelimiter()) ? evalConfig.getDataSet().getDataDelimiter() : evalConfig.getDataSet().getHeaderDelimiter();
      this.headers=CommonUtils.getHeaders(evalConfig.getDataSet().getHeaderPath(),delimiter,evalConfig.getDataSet().getSource());
    }
 else {
      String delimiter=StringUtils.isBlank(evalConfig.getDataSet().getHeaderDelimiter()) ? evalConfig.getDataSet().getDataDelimiter() : evalConfig.getDataSet().getHeaderDelimiter();
      String[] fields=CommonUtils.takeFirstLine(evalConfig.getDataSet().getDataPath(),delimiter,evalConfig.getDataSet().getSource());
      if (StringUtils.join(fields,"String_Node_Str").contains(modelConfig.getTargetColumnName())) {
        this.headers=new String[fields.length];
        for (int i=0; i < fields.length; i++) {
          this.headers[i]=CommonUtils.getRelativePigHeaderColumnName(fields[i]);
        }
        log.warn("String_Node_Str");
        log.warn("String_Node_Str");
      }
 else {
        log.warn("String_Node_Str");
        log.warn("String_Node_Str");
        log.warn("String_Node_Str");
        this.headers=new String[fields.length];
        for (int i=0; i < fields.length; i++) {
          this.headers[i]=i + "String_Node_Str";
        }
      }
    }
    Set<String> evalNamesSet=new HashSet<String>(Arrays.asList(this.headers));
    this.outputNames=new ArrayList<String>();
    if (StringUtils.isNotBlank(evalConfig.getDataSet().getTargetColumnName())) {
      outputNames.add(evalConfig.getDataSet().getTargetColumnName());
    }
 else {
      outputNames.add(modelConfig.getWeightColumnName());
    }
    if (StringUtils.isNotBlank(evalConfig.getDataSet().getWeightColumnName())) {
      outputNames.add(evalConfig.getDataSet().getWeightColumnName());
    }
 else {
      outputNames.add(SCHEMA_PREFIX + "String_Node_Str");
    }
    for (    ColumnConfig columnConfig : this.columnConfigList) {
      if (columnConfig.isFinalSelect()) {
        if (!evalNamesSet.contains(columnConfig.getColumnName())) {
          log.error("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
 else {
          outputNames.add(columnConfig.getColumnName());
        }
      }
    }
  }
 else {
    log.error("String_Node_Str");
    throw new RuntimeException("String_Node_Str");
  }
}

Fixed version (ground truth):
public EvalNormUDF(String source,String pathModelConfig,String pathColumnConfig,String evalSetName) throws IOException {
  super(source,pathModelConfig,pathColumnConfig);
  evalConfig=modelConfig.getEvalConfigByName(evalSetName);
  if (StringUtils.isBlank(evalConfig.getDataSet().getHeaderPath())) {
    throw new RuntimeException("String_Node_Str");
  }
  this.headers=CommonUtils.getFinalHeaders(evalConfig);
  Set<String> evalNamesSet=new HashSet<String>(Arrays.asList(this.headers));
  this.outputNames=new ArrayList<String>();
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getTargetColumnName())) {
    outputNames.add(SCHEMA_PREFIX + evalConfig.getDataSet().getTargetColumnName());
  }
 else {
    outputNames.add(SCHEMA_PREFIX + modelConfig.getTargetColumnName());
  }
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getWeightColumnName())) {
    outputNames.add(SCHEMA_PREFIX + evalConfig.getDataSet().getWeightColumnName());
  }
 else {
    outputNames.add(SCHEMA_PREFIX + "String_Node_Str");
  }
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    columnConfigMap.put(columnConfig.getColumnName(),columnConfig);
  }
  List<String> allMetaColumns=evalConfig.getAllMetaColumns(modelConfig);
  for (  String meta : allMetaColumns) {
    if (evalNamesSet.contains(meta)) {
      outputNames.add(meta);
      validMetaSize+=1;
    }
 else {
      throw new RuntimeException("String_Node_Str" + meta + "String_Node_Str");
    }
  }
  int[] inputOutputIndex=DTrainUtils.getNumericAndCategoricalInputAndOutputCounts(this.columnConfigList);
  boolean isAfterVarSelect=(inputOutputIndex[3] == 1);
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    if (isAfterVarSelect) {
      if (columnConfig.isFinalSelect() && (!columnConfig.isMeta() && !columnConfig.isTarget())) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          if (!outputNames.contains(columnConfig.getColumnName())) {
            outputNames.add(columnConfig.getColumnName());
          }
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
 else {
      if (!columnConfig.isMeta() && !columnConfig.isTarget()) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          if (!outputNames.contains(columnConfig.getColumnName())) {
            outputNames.add(columnConfig.getColumnName());
          }
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
  }
}