2323import java .util .HashMap ;
2424import java .util .Map ;
2525import java .util .stream .StreamSupport ;
26+ import org .kohsuke .github .GHCommitState ;
2627import org .sonar .api .batch .fs .InputComponent ;
2728import org .sonar .api .batch .fs .InputFile ;
2829import org .sonar .api .batch .postjob .PostJob ;
2930import org .sonar .api .batch .postjob .PostJobContext ;
3031import org .sonar .api .batch .postjob .PostJobDescriptor ;
3132import org .sonar .api .batch .postjob .issue .PostJobIssue ;
33+ import org .sonar .api .utils .log .Logger ;
34+ import org .sonar .api .utils .log .Loggers ;
3235
3336/**
3437 * Compute comments to be added on the pull request.
3538 */
3639public class PullRequestIssuePostJob implements PostJob {
40+ private static final Logger LOG = Loggers .get (PullRequestFacade .class );
41+
3742 private static final Comparator <PostJobIssue > ISSUE_COMPARATOR = new IssueComparator ();
3843
3944 private final PullRequestFacade pullRequestFacade ;
@@ -56,15 +61,21 @@ public void describe(PostJobDescriptor descriptor) {
5661 @ Override
5762 public void execute (PostJobContext context ) {
5863 GlobalReport report = new GlobalReport (markDownUtils , gitHubPluginConfiguration .tryReportIssuesInline ());
59- Map <InputFile , Map <Integer , StringBuilder >> commentsToBeAddedByLine = processIssues (report , context .issues ());
64+ try {
65+ Map <InputFile , Map <Integer , StringBuilder >> commentsToBeAddedByLine = processIssues (report , context .issues ());
6066
61- updateReviewComments (commentsToBeAddedByLine );
67+ updateReviewComments (commentsToBeAddedByLine );
6268
63- pullRequestFacade .deleteOutdatedComments ();
69+ pullRequestFacade .deleteOutdatedComments ();
6470
65- pullRequestFacade .createOrUpdateGlobalComments (report .hasNewIssue () ? report .formatForMarkdown () : null );
71+ pullRequestFacade .createOrUpdateGlobalComments (report .hasNewIssue () ? report .formatForMarkdown () : null );
6672
67- pullRequestFacade .createOrUpdateSonarQubeStatus (report .getStatus (), report .getStatusDescription ());
73+ pullRequestFacade .createOrUpdateSonarQubeStatus (report .getStatus (), report .getStatusDescription ());
74+ } catch (Exception e ) {
75+ String msg = "SonarQube failed to complete the review of this pull request" ;
76+ LOG .error (msg , e );
77+ pullRequestFacade .createOrUpdateSonarQubeStatus (GHCommitState .ERROR , msg + ": " + e .getMessage ());
78+ }
6879 }
6980
7081 private Map <InputFile , Map <Integer , StringBuilder >> processIssues (GlobalReport report , Iterable <PostJobIssue > issues ) {
0 commit comments