public String getHtmlDescription() { return details.getHtmlDescription(); }
@CheckForNull public String getDescription(String ruleKey) { RuleDetails details = ruleDetails(ruleKey); if (details == null) { return null; } if (details.getExtendedDescription().isEmpty()) { return details.getHtmlDescription(); } return details.getHtmlDescription() + "<br/><br/>" + details.getExtendedDescription(); }
private void copyRuleHtmlDescriptions(Function<String, RuleDetails> ruleDescriptionProducer, IssuesReport report) { try { Set<String> ruleKeys = report.getSummary().getTotalByRuleKey().keySet(); Path target = reportDir.resolve("sonarlintreport_rules"); Files.createDirectories(target); copyDependency(target, "rule.css"); for (String ruleKey : ruleKeys) { RuleDetails ruleDetails = ruleDescriptionProducer.apply(ruleKey); String htmlDescription = ruleDetails.getHtmlDescription(); String extendedDescription = ruleDetails.getExtendedDescription(); if (!extendedDescription.isEmpty()) { htmlDescription += "\n<div>" + extendedDescription + "</div>"; } FileUtils.write(target.resolve(Util.escapeFileName(ruleKey) + ".html").toFile(), "<!doctype html><html><head><link href=\"rule.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body><h1><big>" + ruleDetails.getName() + "</big> (" + ruleKey + ")</h1><div class=\"rule-desc\">" + htmlDescription + "</div></body></html>", StandardCharsets.UTF_8); } } catch (IOException e) { throw new IllegalStateException("Unable to copy rule descriptions", e); } }
@Test public void should_get_description() { RuleDetails ruleDetails = mock(RuleDetails.class); when(ruleDetails.getExtendedDescription()).thenReturn("desc"); when(ruleDetails.getHtmlDescription()).thenReturn("html"); when(engine.getRuleDetails("rule1")).thenReturn(ruleDetails); assertThat(facade.getDescription("rule1")).isEqualTo("html<br/><br/>desc"); assertThat(facade.getDescription("invalid")).isNull(); }
@Test public void should_get_description() { RuleDetails ruleDetails = mock(RuleDetails.class); when(ruleDetails.getExtendedDescription()).thenReturn("desc"); when(ruleDetails.getHtmlDescription()).thenReturn("html"); when(engine.getRuleDetails("rule1")).thenReturn(ruleDetails); assertThat(facade.getDescription("rule1")).isEqualTo("html<br/><br/>desc"); assertThat(facade.getDescription("invalid")).isNull(); }
@Test public void getters_rule() { RuleDetails details = mock(RuleDetails.class); when(details.getName()).thenReturn("name"); when(details.getKey()).thenReturn("key"); when(details.getHtmlDescription()).thenReturn("html"); when(details.isActiveByDefault()).thenReturn(true); when(details.getSeverity()).thenReturn("severity"); when(details.getType()).thenReturn("type"); when(details.getLanguage()).thenReturn("lang"); RulesTreeNode.Rule node = new RulesTreeNode.Rule(details, false); assertThat(node.getKey()).isEqualTo("key"); assertThat(node.getName()).isEqualTo("name"); assertThat(node.toString()).isEqualTo("name"); assertThat(node.getHtmlDescription()).isEqualTo("html"); assertThat(node.getDefaultActivation()).isTrue(); assertThat(node.isChanged()).isTrue(); assertThat(node.severity()).isEqualTo("severity"); assertThat(node.type()).isEqualTo("type"); assertThat(node.language()).isEqualTo("lang"); }
@Override public void getRuleDetails(RuleKey key, StreamObserver<RuleDetails> response) { try { org.sonarsource.sonarlint.core.client.api.common.RuleDetails ruleDetails = engine.getRuleDetails(key.getKey()); response.onNext(RuleDetails.newBuilder() .setKey(ruleDetails.getKey()) .setName(ruleDetails.getName()) .setLanguage(ruleDetails.getLanguage()) .setSeverity(ruleDetails.getSeverity()) .setHtmlDescription(ruleDetails.getHtmlDescription()) .addAllTags(Arrays.asList(ruleDetails.getTags())) .build()); response.onCompleted(); } catch (Exception e) { LOGGER.error("getRuleDetails", e); response.onError(e); } }
@Override public void getRuleDetails(RuleKey key, StreamObserver<RuleDetails> response) { try { org.sonarsource.sonarlint.core.client.api.common.RuleDetails ruleDetails = engine.getRuleDetails(key.getKey()); response.onNext(RuleDetails.newBuilder() .setKey(ruleDetails.getKey()) .setName(ruleDetails.getName()) .setLanguage(ruleDetails.getLanguage()) .setSeverity(ruleDetails.getSeverity()) .setHtmlDescription(ruleDetails.getHtmlDescription()) .addAllTags(Arrays.asList(ruleDetails.getTags())) .build()); response.onCompleted(); } catch (Exception e) { LOGGER.error("getRuleDetails", e); response.onError(e); } }