@Override public DefaultHighlighting highlight(int startOffset, int endOffset, TypeOfText typeOfText) { checkInputFileNotNull(); TextRange newRange; try { newRange = inputFile.newRange(startOffset, endOffset); } catch (Exception e) { throw new IllegalArgumentException("Unable to highlight file " + inputFile, e); } return highlight(newRange, typeOfText); }
@Override public DefaultHighlighting highlight(int startLine, int startLineOffset, int endLine, int endLineOffset, TypeOfText typeOfText) { checkInputFileNotNull(); TextRange newRange; try { newRange = inputFile.newRange(startLine, startLineOffset, endLine, endLineOffset); } catch (Exception e) { throw new IllegalArgumentException("Unable to highlight file " + inputFile, e); } return highlight(newRange, typeOfText); }
@Before public void setUpSampleRules() { DefaultHighlighting highlightingDataBuilder = new DefaultHighlighting(mock(SensorStorage.class)) .onFile(INPUT_FILE) .highlight(0, 10, COMMENT) .highlight(1, 10, 1, 12, KEYWORD) .highlight(24, 38, KEYWORD) .highlight(42, 50, KEYWORD) .highlight(24, 65, CPP_DOC) .highlight(12, 20, COMMENT); highlightingDataBuilder.save(); highlightingRules = highlightingDataBuilder.getSyntaxHighlightingRuleSet(); }
@Test public void should_prevent_boudaries_overlapping() { throwable.expect(IllegalStateException.class); throwable .expectMessage("Cannot register highlighting rule for characters at Range[from [line=1, lineOffset=8] to [line=1, lineOffset=15]] as it overlaps at least one existing rule"); new DefaultHighlighting(mock(SensorStorage.class)) .onFile(INPUT_FILE) .highlight(0, 10, KEYWORD) .highlight(8, 15, KEYWORD) .save(); }
@Test public void should_prevent_start_equal_end() { throwable.expect(IllegalArgumentException.class); throwable .expectMessage("Unable to highlight file"); new DefaultHighlighting(mock(SensorStorage.class)) .onFile(INPUT_FILE) .highlight(10, 10, KEYWORD) .save(); }
@Test public void should_skip_highlighting_on_short_branch_when_file_status_is_SAME() { DefaultInputFile file = new TestInputFileBuilder("foo", "src/Foo.php") .setContents("// comment") .setStatus(InputFile.Status.SAME).build(); when(branchConfiguration.isShortOrPullRequest()).thenReturn(true); DefaultHighlighting highlighting = new DefaultHighlighting(underTest).onFile(file).highlight(0, 1, TypeOfText.KEYWORD); underTest.store(highlighting); assertThat(reportWriter.hasComponentData(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, file.scannerId())).isFalse(); }
@Test public void should_save_highlighting() { DefaultInputFile file = new TestInputFileBuilder("foo", "src/Foo.php") .setContents("// comment").build(); DefaultHighlighting highlighting = new DefaultHighlighting(underTest).onFile(file).highlight(0, 1, TypeOfText.KEYWORD); underTest.store(highlighting); assertThat(reportWriter.hasComponentData(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, file.scannerId())).isTrue(); }
@Override public HighlightingBuilder highlight(int startOffset, int endOffset, String typeOfText) { TypeOfText type = org.sonar.api.batch.sensor.highlighting.TypeOfText.forCssClass(typeOfText); defaultHighlighting.highlight(startOffset, endOffset, type); return this; }
@Override public DefaultHighlighting highlight(int startLine, int startLineOffset, int endLine, int endLineOffset, TypeOfText typeOfText) { checkInputFileNotNull(); TextRange newRange; try { newRange = inputFile.newRange(startLine, startLineOffset, endLine, endLineOffset); } catch (Exception e) { throw new IllegalArgumentException("Unable to highlight file " + inputFile, e); } return highlight(newRange, typeOfText); }
@Override public DefaultHighlighting highlight(int startOffset, int endOffset, TypeOfText typeOfText) { checkInputFileNotNull(); TextRange newRange; try { newRange = inputFile.newRange(startOffset, endOffset); } catch (Exception e) { throw new IllegalArgumentException("Unable to highlight file " + inputFile, e); } return highlight(newRange, typeOfText); }