Skip to content

Commit fab2333

Browse files
committed
Fixed plugin ID, renaming 'FindBugs' to 'SpotBugs' in UI, borders, warnings
1 parent 12360b8 commit fab2333

File tree

11 files changed

+80
-190
lines changed

11 files changed

+80
-190
lines changed

src/main/java/org/jetbrains/plugins/spotbugs/actions/HelpAction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
public final class HelpAction extends AbstractAction {
5353
// TODO: fill proper values
5454
private static final String DOWNLOADS_WEBSITE = "www.google.com";
55-
private static final String SUPPORT_EMAIL = "[email protected]";
5655

5756
private static final String A_HREF_COPY = "#copy";
5857

@@ -108,15 +107,13 @@ private static StringBuilder createHelpInfo() {
108107
ret.append("<br>");
109108
ret.append("Download: <a href='").append(VersionManager.getDownloadWebsite()).append("'>").append(VersionManager.getDownloadWebsite()).append("</a>");
110109
ret.append("<br>");
111-
ret.append("Email: ").append(VersionManager.getSupportEmail());
110+
ret.append("Issue tracker: ").append(VersionManager.getIssueTracker());
112111
ret.append("</p>");
113112
ret.append("<p>");
114113
ret.append("<h3>Findbugs ").append(FindBugsUtil.getFindBugsFullVersion()).append("</h3>");
115114
ret.append("Website: <a href='").append(Version.WEBSITE).append("'>").append(Version.WEBSITE).append("</a>");
116115
ret.append("<br>");
117116
ret.append("Download: <a href='").append(DOWNLOADS_WEBSITE).append("'>").append(DOWNLOADS_WEBSITE).append("</a>");
118-
ret.append("<br>");
119-
ret.append("Email: ").append(SUPPORT_EMAIL);
120117
ret.append("</p>");
121118
ret.append("<p>");
122119
ret.append("The name FindBugs&trade; and the FindBugs logo are trademarked by The University of Maryland.");

src/main/java/org/jetbrains/plugins/spotbugs/common/FindBugsPluginConstants.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
@SuppressWarnings({"HardCodedStringLiteral"})
2525
public final class FindBugsPluginConstants {
2626

27-
public static final String PLUGIN_NAME = "SpotBugs-IDEA";
28-
public static final String TOOL_WINDOW_ID = PLUGIN_NAME; // see plugin.xml
27+
public static final String PLUGIN_NAME = "IntelliJ SpotBugs plugin";
28+
public static final String TOOL_WINDOW_ID = "SpotBugs"; // see plugin.xml
2929
public static final String DEFAULT_EXPORT_DIR = System.getProperty("user.home") + File.separatorChar + TOOL_WINDOW_ID;
3030

3131
public static final String PLUGIN_ID = "org.jetbrains.plugins.spotbugs";

src/main/java/org/jetbrains/plugins/spotbugs/common/FindBugsPluginUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ private FindBugsPluginUtil() {
3131

3232
@NotNull
3333
public static IdeaPluginDescriptor getIdeaPluginDescriptor() {
34-
final IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId(FindBugsPluginConstants.PLUGIN_NAME));
34+
final IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId(FindBugsPluginConstants.PLUGIN_ID));
3535
if (plugin == null) {
36-
throw new IllegalStateException(FindBugsPluginConstants.PLUGIN_NAME + " could not be instantiated! PluginManager returned null!");
36+
throw new IllegalStateException(FindBugsPluginConstants.PLUGIN_ID + " could not be instantiated! PluginManager returned null!");
3737
}
3838
return plugin;
3939
}

src/main/java/org/jetbrains/plugins/spotbugs/common/VersionManager.java

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import java.io.FileOutputStream;
2626
import java.io.IOException;
2727
import java.io.OutputStreamWriter;
28-
import java.nio.charset.Charset;
28+
import java.nio.charset.*;
2929

3030

3131
/**
@@ -42,18 +42,15 @@ public class VersionManager {
4242

4343
private static final long _major = 1;
4444
private static final long _minor = 0;
45-
private static final long _build = 1;
46-
47-
private static final String _branch = "trunk";
48-
45+
private static final long _build = 0;
4946

5047
private static final String NAME = FindBugsPluginConstants.PLUGIN_NAME;
51-
52-
private static final String WEBSITE = "http://andrepdo.github.io/findbugs-idea";
48+
49+
private static final String WEBSITE = "https://github.com/JetBrains/spotbugs-intellij-plugin/";
5350

5451
private static final String DOWNLOAD_WEBSITE = "http://plugins.intellij.net/plugin/?id=3847";
5552

56-
private static final String SUPPORT_EMAIL = "andre.pfeiler@gmail.com";
53+
private static final String ISSUE_TRACKER = "https://github.com/JetBrains/spotbugs-intellij-plugin/issues";
5754

5855
private static final long REVISION;
5956

@@ -74,23 +71,18 @@ public class VersionManager {
7471
}
7572
}
7673
REVISION = parsedRevision;
77-
//noinspection StringEqualsEmptyString,SingleCharacterStringConcatenation
7874
FULL_VERSION = NAME + ' ' + MAJOR_MINOR_BUILD;
7975
}
8076

8177

82-
/** e.g. "0.9.21".
83-
* @return*/
78+
/**
79+
* @return version number, e.g. "1.0.0"
80+
*/
8481
public static String getVersion() {
8582
return MAJOR_MINOR_BUILD;
8683
}
8784

8885

89-
public static String getBranch() {
90-
return _branch;
91-
}
92-
93-
9486
public static String getFullVersion() {
9587
return FULL_VERSION;
9688
}
@@ -116,8 +108,8 @@ public static String getDownloadWebsite() {
116108
}
117109

118110

119-
public static String getSupportEmail() {
120-
return SUPPORT_EMAIL;
111+
public static String getIssueTracker() {
112+
return ISSUE_TRACKER;
121113
}
122114

123115

@@ -129,7 +121,7 @@ public static void main(final String[] args) {
129121
OutputStreamWriter writer = null;
130122
try {
131123
//noinspection IOResourceOpenedButNotSafelyClosed
132-
writer = new OutputStreamWriter(new FileOutputStream(file), Charset.forName("UTF-8").newEncoder());
124+
writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
133125
writer.write(getVersion());
134126
writer.flush();
135127
} catch (final IOException e) {

src/main/java/org/jetbrains/plugins/spotbugs/common/util/WithPluginClassloader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* This must be used when FindBugs will create a SAXReader because this use the default DocumentFactory instance
2929
* (org.dom4j.DocumentFactory#getInstance) which is created by createSingleton which uses Class.forName.
3030
* <p>
31-
* Note that all our classes (incl transitive) must be loaded by the PluginClassLoader instance of FindBugs-IDEA plugin.
31+
* Note that all our classes (incl transitive) must be loaded by the PluginClassLoader instance of SpotBugs-IDEA plugin.
3232
* Check: DebugUtil.dumpClasses(TheClass.class);
3333
*/
3434
public final class WithPluginClassloader {

src/main/java/org/jetbrains/plugins/spotbugs/core/ToolWindowFactoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
public final class ToolWindowFactoryImpl implements ToolWindowFactory {
3030
@Override
3131
public void createToolWindowContent(@NotNull final Project project, @NotNull final ToolWindow toolWindow) {
32-
final ToolWindowPanel win = new ToolWindowPanel(project, toolWindow);
32+
final ToolWindowPanel win = new ToolWindowPanel(project);
3333
toolWindow.getContentManager().addContent(ContentFactory.SERVICE.getInstance().createContent(win, "", false));
3434
}
3535
}

src/main/java/org/jetbrains/plugins/spotbugs/gui/common/AnalysisRunDetailsDialog.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.intellij.openapi.project.Project;
2323
import com.intellij.openapi.ui.DialogBuilder;
2424
import com.intellij.openapi.util.text.StringUtil;
25+
import com.intellij.util.ui.JBUI;
2526
import org.jetbrains.plugins.spotbugs.common.VersionManager;
2627
import org.jetbrains.plugins.spotbugs.common.util.FindBugsUtil;
2728
import org.jetbrains.plugins.spotbugs.common.util.New;
@@ -60,7 +61,7 @@ public static DialogBuilder create(
6061
final StringBuilder html = new StringBuilder();
6162
html.append("<html><body>");
6263
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>");
63-
html.append("<p>").append("<font size='10px'>using ").append(VersionManager.getFullVersion()).append(" with Findbugs version ").append(FindBugsUtil.getFindBugsFullVersion()).append("</font>").append("</p>");
64+
html.append("<p>").append("<font size='10px'>using ").append(VersionManager.getFullVersion()).append(" with SpotBugs version ").append(FindBugsUtil.getFindBugsFullVersion()).append("</font>").append("</p>");
6465

6566
for (final edu.umd.cs.findbugs.Project bugsProject : result.getProjects()) {
6667

@@ -131,7 +132,7 @@ public static DialogBuilder create(
131132
dialogBuilder.addCloseButton();
132133
dialogBuilder.setTitle(StringUtil.capitalizeWords("SpotBugs analysis settings", true));
133134
final JComponent panel = new JPanel(new BorderLayout());
134-
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
135+
panel.setBorder(JBUI.Borders.empty(10));
135136

136137
final HTMLEditorKit htmlEditorKit = GuiResources.createHtmlEditorKit();
137138
final JEditorPane jEditorPane = new JEditorPane() {

src/main/java/org/jetbrains/plugins/spotbugs/gui/common/MultiSplitLayout.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public PropertyChangeListener[] getPropertyChangeListeners() {
127127

128128

129129
private void firePCS(final String propertyName, final Object oldValue, final Object newValue) {
130-
if (!(oldValue != null && newValue != null && oldValue.equals(newValue))) {
130+
if (!(oldValue != null && oldValue.equals(newValue))) {
131131
pcs.firePropertyChange(propertyName, oldValue, newValue);
132132
}
133133
}

src/main/java/org/jetbrains/plugins/spotbugs/gui/toolwindow/view/BugDetailsComponents.java

Lines changed: 26 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -22,57 +22,26 @@
2222
import com.intellij.ide.BrowserUtil;
2323
import com.intellij.openapi.diagnostic.Logger;
2424
import com.intellij.openapi.util.SystemInfo;
25-
import com.intellij.ui.JBColor;
2625
import com.intellij.ui.components.JBTabbedPane;
27-
import com.intellij.util.ui.UIUtil;
28-
import edu.umd.cs.findbugs.BugAnnotation;
29-
import edu.umd.cs.findbugs.BugInstance;
30-
import edu.umd.cs.findbugs.BugPattern;
31-
import edu.umd.cs.findbugs.DetectorFactory;
32-
import edu.umd.cs.findbugs.FieldAnnotation;
33-
import edu.umd.cs.findbugs.MethodAnnotation;
34-
import edu.umd.cs.findbugs.Plugin;
35-
import edu.umd.cs.findbugs.SortedBugCollection;
26+
import com.intellij.util.ui.*;
27+
import edu.umd.cs.findbugs.*;
3628
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
3729
import icons.PluginIcons;
3830
import org.jetbrains.annotations.NotNull;
3931
import org.jetbrains.plugins.spotbugs.common.util.BugInstanceUtil;
40-
import org.jetbrains.plugins.spotbugs.gui.common.CustomLineBorder;
41-
import org.jetbrains.plugins.spotbugs.gui.common.MultiSplitLayout;
42-
import org.jetbrains.plugins.spotbugs.gui.common.MultiSplitPane;
43-
import org.jetbrains.plugins.spotbugs.gui.common.ScrollPaneFacade;
44-
import org.jetbrains.plugins.spotbugs.gui.common.VerticalTextIcon;
32+
import org.jetbrains.plugins.spotbugs.gui.common.*;
4533
import org.jetbrains.plugins.spotbugs.gui.tree.view.BugTree;
4634
import org.jetbrains.plugins.spotbugs.resources.GuiResources;
4735

48-
import javax.swing.BorderFactory;
49-
import javax.swing.JEditorPane;
50-
import javax.swing.JPanel;
51-
import javax.swing.JScrollPane;
52-
import javax.swing.JTabbedPane;
53-
import javax.swing.ScrollPaneConstants;
54-
import javax.swing.SwingConstants;
55-
import javax.swing.SwingUtilities;
56-
import javax.swing.border.EmptyBorder;
36+
import javax.swing.*;
5737
import javax.swing.event.HyperlinkEvent;
58-
import javax.swing.event.HyperlinkListener;
5938
import javax.swing.text.html.HTMLEditorKit;
60-
import java.awt.BorderLayout;
61-
import java.awt.Color;
62-
import java.awt.Component;
63-
import java.awt.Dimension;
64-
import java.awt.Graphics;
65-
import java.awt.Graphics2D;
66-
import java.awt.Rectangle;
67-
import java.awt.RenderingHints;
39+
import java.awt.*;
6840
import java.awt.event.KeyEvent;
69-
import java.io.IOException;
70-
import java.io.StringReader;
41+
import java.io.*;
7142
import java.net.URL;
7243
import java.util.Collection;
73-
import java.util.HashSet;
74-
import java.util.Iterator;
75-
import java.util.LinkedHashSet;
44+
import java.util.stream.Collectors;
7645

7746
@SuppressWarnings("MagicNumber")
7847
public final class BugDetailsComponents {
@@ -108,6 +77,7 @@ JTabbedPane getTabbedPane() {
10877
_jTabbedPane = new JTabbedPane(SwingConstants.RIGHT);
10978
} else {
11079
_jTabbedPane = new JBTabbedPane(SwingConstants.RIGHT);
80+
((JBTabbedPane) _jTabbedPane).setTabComponentInsets(JBUI.insets(0, 0, 0, 5));
11181
}
11282

11383
_jTabbedPane.setFocusable(false);
@@ -144,7 +114,7 @@ private Component getBugDetailsSplitPane() {
144114
final String layoutDef = "(ROW weight=1.0 (COLUMN weight=1.0 top bottom))";
145115
final MultiSplitLayout.Node modelRoot = MultiSplitLayout.parseModel(layoutDef);
146116
final MultiSplitLayout multiSplitLayout = _bugDetailsSplitPane.getMultiSplitLayout();
147-
multiSplitLayout.setDividerSize(6);
117+
multiSplitLayout.setDividerSize(3);
148118
multiSplitLayout.setModel(modelRoot);
149119
multiSplitLayout.setFloatingDividers(true);
150120
_bugDetailsSplitPane.add(getBugDetailsPanel(), "top");
@@ -155,17 +125,13 @@ private Component getBugDetailsSplitPane() {
155125
return _bugDetailsSplitPane;
156126
}
157127

158-
@SuppressWarnings("MagicNumber")
159128
private JPanel getBugDetailsPanel() {
160129
if (_bugDetailsPanel == null) {
161130
final JScrollPane scrollPane = ScrollPaneFacade.createScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
162131
scrollPane.setViewportView(getBugDetailsPane());
163-
//scrollPane.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(0, 0, 0, 3), new CustomLineBorder(new Color(98, 95, 89), 0, 0, 1, 1)));
164-
scrollPane.setBorder(new CustomLineBorder(new JBColor(new Color(98, 95, 89), new Color(53, 51, 48)), 0, 0, 1, 0));
165-
//scrollPane.setBorder(new EmptyBorder(0, 0, 0, 0));
166132

167133
_bugDetailsPanel = new JPanel();
168-
_bugDetailsPanel.setBorder(new EmptyBorder(3, 2, 0, 3));
134+
_bugDetailsPanel.setBorder(JBUI.Borders.empty());
169135
_bugDetailsPanel.setLayout(new BorderLayout());
170136
_bugDetailsPanel.add(scrollPane, BorderLayout.CENTER);
171137
}
@@ -176,16 +142,13 @@ private JPanel getBugDetailsPanel() {
176142
private JEditorPane getBugDetailsPane() {
177143
if (_bugDetailsPane == null) {
178144
_bugDetailsPane = new BugDetailsEditorPane();
179-
_bugDetailsPane.setBorder(new EmptyBorder(10, 10, 10, 10));
145+
_bugDetailsPane.setBorder(JBUI.Borders.empty(5));
180146
_bugDetailsPane.setEditable(false);
181147
_bugDetailsPane.setContentType(UIUtil.HTML_MIME);
182148
_bugDetailsPane.setEditorKit(_htmlEditorKit);
183-
_bugDetailsPane.addHyperlinkListener(new HyperlinkListener() {
184-
@Override
185-
public void hyperlinkUpdate(final HyperlinkEvent evt) {
186-
if (_parent != null) {
187-
handleDetailsClick(evt);
188-
}
149+
_bugDetailsPane.addHyperlinkListener(evt -> {
150+
if (_parent != null) {
151+
handleDetailsClick(evt);
189152
}
190153
});
191154
}
@@ -197,10 +160,10 @@ private JPanel getBugExplanationPanel() {
197160
if (_explanationPanel == null) {
198161
final JScrollPane scrollPane = ScrollPaneFacade.createScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
199162
scrollPane.setViewportView(getExplanationPane());
200-
scrollPane.setBorder(BorderFactory.createCompoundBorder(new CustomLineBorder(new JBColor(new Color(208, 206, 203), new Color(170, 168, 165)), 1, 0, 0, 0), new CustomLineBorder(new JBColor(new Color(98, 95, 89), new Color(71, 68, 62)), 1, 0, 0, 0)));
163+
//scrollPane.setBorder(BorderFactory.createCompoundBorder(new CustomLineBorder(new JBColor(new Color(208, 206, 203), new Color(170, 168, 165)), 1, 0, 0, 0), new CustomLineBorder(new JBColor(new Color(98, 95, 89), new Color(71, 68, 62)), 1, 0, 0, 0)));
201164

202165
_explanationPanel = new JPanel();
203-
_explanationPanel.setBorder(new EmptyBorder(0, 2, 0, 3));
166+
_explanationPanel.setBorder(JBUI.Borders.empty());
204167
_explanationPanel.setLayout(new BorderLayout());
205168
_explanationPanel.add(scrollPane, BorderLayout.CENTER);
206169
}
@@ -212,16 +175,11 @@ private JPanel getBugExplanationPanel() {
212175
private JEditorPane getExplanationPane() {
213176
if (_explanationPane == null) {
214177
_explanationPane = new ExplanationEditorPane();
215-
_explanationPane.setBorder(new EmptyBorder(10, 10, 10, 10));
178+
_explanationPane.setBorder(JBUI.Borders.empty(10));
216179
_explanationPane.setEditable(false);
217180
_explanationPane.setContentType("text/html");
218181
_explanationPane.setEditorKit(_htmlEditorKit);
219-
_explanationPane.addHyperlinkListener(new HyperlinkListener() {
220-
@Override
221-
public void hyperlinkUpdate(final HyperlinkEvent evt) {
222-
editorPaneHyperlinkUpdate(evt);
223-
}
224-
});
182+
_explanationPane.addHyperlinkListener(this::editorPaneHyperlinkUpdate);
225183
}
226184

227185
return _explanationPane;
@@ -389,27 +347,22 @@ void setBugExplanation(final SortedBugCollection bugCollection, final BugInstanc
389347

390348
private void refreshDetailsShown() {
391349
final String html = BugInstanceUtil.getDetailHtml(_lastBugInstance);
392-
final StringReader reader = new StringReader(html); // no need for BufferedReader
393-
try {
394-
_explanationPane.setToolTipText(edu.umd.cs.findbugs.L10N.getLocalString("tooltip.longer_description", "This gives a longer description of the detected bug pattern"));
350+
// no need for BufferedReader
351+
try (StringReader reader = new StringReader(html)) {
352+
_explanationPane.setToolTipText(edu.umd.cs.findbugs.L10N
353+
.getLocalString("tooltip.longer_description", "This gives a longer description of the detected bug " +
354+
"pattern"));
395355
_explanationPane.read(reader, "html bug description");
396356
} catch (final IOException e) {
397357
_explanationPane.setText("Could not find bug description: " + e.getMessage());
398358
LOGGER.warn(e.getMessage(), e);
399-
} finally {
400-
reader.close(); // polite, but doesn't do much in StringReader
401359
}
402360
scrollRectToVisible(_bugDetailsPane);
403361
}
404362

405363
@SuppressWarnings({"AnonymousInnerClass"})
406364
private static void scrollRectToVisible(final JEditorPane pane) {
407-
SwingUtilities.invokeLater(new Runnable() {
408-
@Override
409-
public void run() {
410-
pane.scrollRectToVisible(new Rectangle(0, 0, 0, 0));
411-
}
412-
});
365+
SwingUtilities.invokeLater(() -> pane.scrollRectToVisible(new Rectangle(0, 0, 0, 0)));
413366
}
414367

415368
void adaptSize(final int width, final int height) {
@@ -460,22 +413,9 @@ public void clear() {
460413
}
461414

462415
public static String createBugsAbbreviation(final DetectorFactory factory) {
463-
final StringBuilder sb = new StringBuilder();
464416
final Collection<BugPattern> patterns = factory.getReportedBugPatterns();
465-
final HashSet<String> abbrs = new LinkedHashSet<String>();
466-
for (final BugPattern pattern : patterns) {
467-
final String abbr = pattern.getAbbrev();
468-
abbrs.add(abbr);
469-
}
470-
//noinspection ForLoopWithMissingComponent
471-
for (final Iterator<String> iter = abbrs.iterator(); iter.hasNext(); ) {
472-
final String element = iter.next();
473-
sb.append(element);
474-
if (iter.hasNext()) {
475-
sb.append('|');
476-
}
477-
}
478-
return sb.toString();
417+
return patterns.stream().map(BugPattern::getAbbrev)
418+
.distinct().collect(Collectors.joining("|"));
479419
}
480420

481421
private static class BugDetailsEditorPane extends JEditorPane {

0 commit comments

Comments
 (0)