23
23
import java .util .HashMap ;
24
24
import java .util .Map ;
25
25
import java .util .stream .StreamSupport ;
26
+ import org .kohsuke .github .GHCommitState ;
26
27
import org .sonar .api .batch .fs .InputComponent ;
27
28
import org .sonar .api .batch .fs .InputFile ;
28
29
import org .sonar .api .batch .postjob .PostJob ;
29
30
import org .sonar .api .batch .postjob .PostJobContext ;
30
31
import org .sonar .api .batch .postjob .PostJobDescriptor ;
31
32
import org .sonar .api .batch .postjob .issue .PostJobIssue ;
33
+ import org .sonar .api .utils .log .Logger ;
34
+ import org .sonar .api .utils .log .Loggers ;
32
35
33
36
/**
34
37
* Compute comments to be added on the pull request.
35
38
*/
36
39
public class PullRequestIssuePostJob implements PostJob {
40
+ private static final Logger LOG = Loggers .get (PullRequestFacade .class );
41
+
37
42
private static final Comparator <PostJobIssue > ISSUE_COMPARATOR = new IssueComparator ();
38
43
39
44
private final PullRequestFacade pullRequestFacade ;
@@ -56,15 +61,21 @@ public void describe(PostJobDescriptor descriptor) {
56
61
@ Override
57
62
public void execute (PostJobContext context ) {
58
63
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 ());
60
66
61
- updateReviewComments (commentsToBeAddedByLine );
67
+ updateReviewComments (commentsToBeAddedByLine );
62
68
63
- pullRequestFacade .deleteOutdatedComments ();
69
+ pullRequestFacade .deleteOutdatedComments ();
64
70
65
- pullRequestFacade .createOrUpdateGlobalComments (report .hasNewIssue () ? report .formatForMarkdown () : null );
71
+ pullRequestFacade .createOrUpdateGlobalComments (report .hasNewIssue () ? report .formatForMarkdown () : null );
66
72
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
+ }
68
79
}
69
80
70
81
private Map <InputFile , Map <Integer , StringBuilder >> processIssues (GlobalReport report , Iterable <PostJobIssue > issues ) {
0 commit comments