public static DialogBuilder create()

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;
	}