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;
}