in src/main/java/org/jetbrains/plugins/spotbugs/gui/common/AnalysisRunDetailsDialog.java [54:163]
public static DialogBuilder create(
final Project project,
final int bugCount,
final int numClasses,
final FindBugsResult result
) {
final StringBuilder html = new StringBuilder();
html.append("<html><body>");
html.append("<p><h2>").append(VersionManager.getName()).append(": <b>found ").append(bugCount).append(" bugs in ").append(numClasses).append(numClasses > 1 ? " classes" : " class").append("</b>").append("</h2></p>");
html.append("<p>").append("<font size='10px'>using ").append(VersionManager.getFullVersion()).append(" with SpotBugs version ").append(FindBugsUtil.getFindBugsFullVersion()).append("</font>").append("</p>");
for (final edu.umd.cs.findbugs.Project bugsProject : result.getProjects()) {
html.append("<p><h2>").append(bugsProject.getProjectName()).append("</h3></p>");
final List<String> fileList = bugsProject.getFileList();
final List<String> auxClasspathEntries = bugsProject.getAuxClasspathEntryList();
List<String> configuredOutputFiles = new ArrayList<>();
if (bugsProject instanceof FindBugsProject) {
configuredOutputFiles = ((FindBugsProject) bugsProject).getConfiguredOutputFiles();
} // else project was imported from XML
if (!configuredOutputFiles.isEmpty()) {
html.append("<p><h3>Configured Output Files/Paths - the analysis entry point").append(" <font color='gray'>(").append(configuredOutputFiles.size()).append(")</h3></p>");
html.append("<ul>");
for (final String file : configuredOutputFiles) {
html.append("<li>");
html.append(file);
html.append("</li>");
}
html.append("</ul>");
}
html.append("<p><h3>Compile Output Path").append(" <font size='9px' color='gray'>(").append("IDEA)</h3></p>");
html.append("<ul>");
for (final String resolved : bugsProject.getResolvedSourcePaths()) {
html.append("<li>");
html.append(resolved);
html.append("</li>");
}
html.append("</ul>");
html.append("<p><h3>Sources Dir List ").append(" <font size='9px' color='gray'>(").append(bugsProject.getNumSourceDirs()).append(")</h3></p>");
html.append("<ul>");
final List<String> sourceDirList = bugsProject.getSourceDirList();
for (final String sourceDir : sourceDirList) {
html.append("<li>");
html.append(sourceDir);
html.append("</li>");
}
html.append("</ul>");
html.append("<p><h3>Analyzed Classes List ").append(" <font size='9px' color='gray'>(").append(bugsProject.getFileCount()).append(")</h3></p>");
html.append("<ul>");
for (final String file : fileList) {
html.append("<li>");
html.append(file);
html.append("</li>");
}
html.append("</ul>");
html.append("<p><h3>Aux Classpath Entries ").append(" <font size='9px' color='gray'>(").append(bugsProject.getNumAuxClasspathEntries()).append(")</h3></p>");
html.append("<ul>");
for (final String auxClasspathEntry : auxClasspathEntries) {
html.append("<li>");
html.append(auxClasspathEntry);
html.append("</li>");
}
html.append("</ul>");
}
html.append("</html></body>");
final DialogBuilder dialogBuilder = new DialogBuilder(project);
dialogBuilder.addCloseButton();
dialogBuilder.setTitle(StringUtil.capitalizeWords("SpotBugs analysis settings", true));
final JComponent panel = new JPanel(new BorderLayout());
panel.setBorder(JBUI.Borders.empty(10));
final HTMLEditorKit htmlEditorKit = GuiResources.createHtmlEditorKit();
final JEditorPane jEditorPane = new JEditorPane() {
@Override
protected void paintComponent(final Graphics g) {
super.paintComponent(g);
final Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
}
};
jEditorPane.setPreferredSize(new Dimension(550, 650));
jEditorPane.setEditable(false);
jEditorPane.setContentType("text/html");
jEditorPane.setEditorKit(htmlEditorKit);
jEditorPane.setText(html.toString());
panel.add(ScrollPaneFacade.createScrollPane(jEditorPane, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
dialogBuilder.setCenterPanel(panel);
SwingUtilities.invokeLater(() -> jEditorPane.scrollRectToVisible(new Rectangle(0, 0)));
return dialogBuilder;
}