HeuristicResult findResponsibleUser()

in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/processing/ResponsibleUserFinder.java [27:65]


  HeuristicResult findResponsibleUser(SBuild sBuild,
                                      SProject sProject,
                                      List<BuildProblem> buildProblems,
                                      List<STestRun> testRuns) {

    if (buildProblems.isEmpty() && testRuns.isEmpty()) {
      return new HeuristicResult();
    }

    HeuristicResult result = new HeuristicResult();
    Set<String> usernamesBlackList = CustomParameters.getUsersToIgnore(sBuild);
    for (Heuristic heuristic : myOrderedHeuristics) {
      if (myCustomParameters.isHeuristicsDisabled(heuristic.getId())) {
        continue;
      }

      HeuristicContext heuristicContext =
        new HeuristicContext(sBuild, sProject, buildProblems, testRuns, usernamesBlackList);
      HeuristicResult heuristicResult = heuristic.findResponsibleUser(heuristicContext);

      buildProblems = heuristicContext.getBuildProblems()
                                      .stream()
                                      .filter(buildProblem -> heuristicResult.getResponsibility(buildProblem) == null)
                                      .collect(Collectors.toList());

      testRuns = heuristicContext.getTestRuns()
                                 .stream()
                                 .filter(sTestRun -> heuristicResult.getResponsibility(sTestRun) == null)
                                 .collect(Collectors.toList());

      result.merge(heuristicResult);

      if (buildProblems.isEmpty() && testRuns.isEmpty()) {
        break;
      }
    }

    return result;
  }