public HeuristicResult findResponsibleUser()

in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/heuristics/PreviousResponsibleHeuristic.java [37:83]


  public HeuristicResult findResponsibleUser(@NotNull HeuristicContext heuristicContext) {
    HeuristicResult result = new HeuristicResult();
    SBuild sBuild = heuristicContext.getBuild();
    SProject sProject = heuristicContext.getProject();
    Iterable<STestRun> sTestRuns = heuristicContext.getTestRuns();

    HashMap<Long, User> testId2Responsible = myInvestigationsManager.findInAudit(sTestRuns, sProject);
    for (STestRun sTestRun : heuristicContext.getTestRuns()) {
      STest sTest = sTestRun.getTest();

      User responsibleUser = myInvestigationsManager.findPreviousResponsible(sProject, sBuild, sTest);

      if (responsibleUser == null) {
        responsibleUser = testId2Responsible.get(sTest.getTestNameId());
      }

      if (shouldSkip(responsibleUser, heuristicContext)) {
        continue;
      }

      if (responsibleUser != null) {
        String description = String.format("was previously responsible for the test %s", sTest.getName());

        result.addResponsibility(sTestRun, new Responsibility(responsibleUser, description));
      }
    }

    for (BuildProblem buildProblem : heuristicContext.getBuildProblems()) {
      String buildProblemType = buildProblem.getBuildProblemData().getType();
      if (!BuildProblemsFilter.supportedEverywhereTypes.contains(buildProblemType)) {
        continue;
      }

      User responsibleUser = myInvestigationsManager.findPreviousResponsible(sProject, sBuild, buildProblem);

      if (shouldSkip(responsibleUser, heuristicContext)) {
        continue;
      }

      if (responsibleUser != null) {
        String description = String.format("was previously responsible for the problem %s`", buildProblemType);
        result.addResponsibility(buildProblem, new Responsibility(responsibleUser, description));
      }
    }

    return result;
  }