Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
if (!Collections.synchronizedList(activeProblems).remove(problem)) {
logger.warn("Removal of problem failed, resetting");
resetForEditor(problem.getTextEditor().getEditor());
return;

Check warning on line 43 in src/main/java/org/overengineer/inlineproblems/ProblemManager.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unnecessary 'return' statement

`return` is unnecessary as the last statement in a 'void' method
}
}

Expand All @@ -64,6 +64,12 @@
removeProblem(p);
});

// Limit problems per line
int maxProblemsPerLine = settingsState.getMaxProblemsPerLine();
if (maxProblemsPerLine > 0 && problemsInLine.size() > maxProblemsPerLine) {
problemsInLine.subList(maxProblemsPerLine, problemsInLine.size()).clear();
}

/* This only works when using a method reference, if we move the code from the addProblemPrivate func into a lambda
* it does not work like expected, that is because there are differences in the evaluation and the way it is called */
problemsInLine.forEach(this::addProblemPrivate);
Expand Down Expand Up @@ -124,7 +130,7 @@

for (int additionalSeverity : settingsState.getAdditionalInfoSeverities()) {
if (additionalSeverity == severity) {
problem.setSeverity(HighlightSeverity.INFO.myVal);

Check warning on line 133 in src/main/java/org/overengineer/inlineproblems/ProblemManager.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Deprecated API usage

'INFO' is deprecated
return;
}
}
Expand Down Expand Up @@ -182,7 +188,7 @@
Map<String, InlineProblem> filteredMap = new HashMap<>();

for (InlineProblem problem : newProblems) {
String key = problem.getTextEditor().getFile().getPath() + problem.getLine();

Check warning on line 191 in src/main/java/org/overengineer/inlineproblems/ProblemManager.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Nullability and data flow problems

Method invocation `getPath` may produce `NullPointerException`

if (filteredMap.containsKey(key)) {
if (filteredMap.get(key).getSeverity() < problem.getSeverity()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public class SettingsComponent {
private final JBCheckBox enableXmlUnescaping = new JBCheckBox(SettingsBundle.message("settings.enableXmlUnescaping"));
private final JFormattedTextField inlayFontSizeDeltaText;
private final JFormattedTextField manualScannerDelay;
private final JFormattedTextField maxProblemsPerLine;
private final JFormattedTextField maxFileLines;
private final JBCheckBox fillProblemLabels = new JBCheckBox(SettingsBundle.message("settings.fillProblemLabels"));
private final JBCheckBox boldProblemLabels = new JBCheckBox(SettingsBundle.message("settings.boldProblemLabels"));
Expand Down Expand Up @@ -128,6 +129,9 @@ public SettingsComponent() {
inlayFontSizeDeltaText = new JFormattedTextField(numberFormatter);
inlayFontSizeDeltaText.setText(Integer.toString(settingsState.getInlayFontSizeDelta()));

maxProblemsPerLine = new JFormattedTextField(numberFormatter);
maxProblemsPerLine.setText(Integer.toString(settingsState.getMaxProblemsPerLine()));

manualScannerDelay = new JFormattedTextField(numberFormatter);
manualScannerDelay.setText(Integer.toString(settingsState.getManualScannerDelay()));

Expand Down Expand Up @@ -178,6 +182,8 @@ public SettingsComponent() {
.addTooltip(SettingsBundle.message("settings.problemFilterListTooltip"))
.addLabeledComponent(new JLabel(SettingsBundle.message("settings.fileExtensionBlacklistLabel")), fileExtensionBlacklist)
.addTooltip(SettingsBundle.message("settings.fileExtensionBlacklistTooltip"))
.addLabeledComponent(new JBLabel(SettingsBundle.message("settings.maxProblemsPerLineLabel")), maxProblemsPerLine)
.addTooltip(SettingsBundle.message("settings.maxProblemsPerLineTooltip"))
.addLabeledComponent(new JLabel(SettingsBundle.message("settings.maxFileLinesLabel")), maxFileLines)
.addTooltip(SettingsBundle.message("settings.maxFileLinesTooltip"))
.addSeparator()
Expand Down Expand Up @@ -616,6 +622,19 @@ public void setManualScannerDelay(int delay) {
manualScannerDelay.setText(Integer.toString(Math.max(10, delay)));
}

public int getMaxProblemsPerLine() {
try {
return Math.max(Integer.parseInt(maxProblemsPerLine.getText()), 0);
}
catch (NumberFormatException e) {
return 0;
}
}

public void setMaxProblemsPerLine(int max) {
maxProblemsPerLine.setText(Integer.toString(Math.max(0, max)));
}

public int getMaxFileLines() {
try {
return Math.max(Integer.parseInt(maxFileLines.getText()), 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
SettingsConfigurable() {}

@Override
@NlsContexts.ConfigurableName

Check warning on line 23 in src/main/java/org/overengineer/inlineproblems/settings/SettingsConfigurable.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'com.intellij.openapi.util.NlsContexts.ConfigurableName' is declared in unstable class 'com.intellij.openapi.util.NlsContexts' marked with @ApiStatus.Experimental

Check warning on line 23 in src/main/java/org/overengineer/inlineproblems/settings/SettingsConfigurable.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'com.intellij.openapi.util.NlsContexts' is marked unstable with @ApiStatus.Experimental
public String getDisplayName() {
return "InlineProblems";
}
Expand All @@ -46,6 +46,7 @@
state.isRoundedCornerBoxes() == settingsComponent.isRoundedCornerBoxes() &&
state.isUseEditorFont() == settingsComponent.isUseEditorFont() &&
state.isShowOnlyHighestSeverityPerLine() == settingsComponent.isShowOnlyHighestSeverityPerLine() &&
state.getMaxProblemsPerLine() == settingsComponent.getMaxProblemsPerLine() &&
state.isEnableHtmlStripping() == settingsComponent.isEnableHtmlStripping() &&
state.isEnableXmlUnescaping() == settingsComponent.isEnableXmlUnescaping() &&
state.getInlayFontSizeDelta() == settingsComponent.getInlayFontSizeDelta() &&
Expand Down Expand Up @@ -139,6 +140,7 @@
state.setRoundedCornerBoxes(settingsComponent.isRoundedCornerBoxes());
state.setUseEditorFont(settingsComponent.isUseEditorFont());
state.setShowOnlyHighestSeverityPerLine(settingsComponent.isShowOnlyHighestSeverityPerLine());
state.setMaxProblemsPerLine(settingsComponent.getMaxProblemsPerLine());
state.setEnableHtmlStripping(settingsComponent.isEnableHtmlStripping());
state.setEnableXmlUnescaping(settingsComponent.isEnableXmlUnescaping());
state.setInlayFontSizeDelta(settingsComponent.getInlayFontSizeDelta());
Expand Down Expand Up @@ -210,6 +212,7 @@
settingsComponent.setRoundedCornerBoxes(state.isRoundedCornerBoxes());
settingsComponent.setUseEditorFont(state.isUseEditorFont());
settingsComponent.setShowOnlyHighestSeverityPerLine(state.isShowOnlyHighestSeverityPerLine());
settingsComponent.setMaxProblemsPerLine(state.getMaxProblemsPerLine());
settingsComponent.setEnableHtmlStripping(state.isEnableHtmlStripping());
settingsComponent.setEnableXmlUnescaping(state.isEnableXmlUnescaping());
settingsComponent.setInlayFontSizeDelta(state.getInlayFontSizeDelta());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
private boolean showOnlyHighestSeverityPerLine = false;
private boolean enableHtmlStripping = true;
private boolean enableXmlUnescaping = true;
private int maxProblemsPerLine = 20;

// migration booleans
private boolean highlightProblemListenerDeprecateMigrationDone = false;
Expand Down Expand Up @@ -139,7 +140,7 @@
List<String> newFilterListEntries = List.of("Consider unknown contexts non-blocking");
for (String entry : newFilterListEntries) {
if (!problemFilterList.contains(entry)) {
problemFilterList += ";" + entry;

Check warning on line 143 in src/main/java/org/overengineer/inlineproblems/settings/SettingsState.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

String concatenation in loop

String concatenation `+=` in loop
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/messages/SettingsBundle_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,7 @@ settings.additionalSeveritiesInfoDesc=Semicolon separated list of additional inf
settings.forceProblemsInOneLine=Force problems in the same line even if they are too long to fit
settings.useEditorFont=Use editor font instead of tooltip font
settings.showOnlyHighestPerLine=Show only the problem with the highest severity per line
settings.maxProblemsPerLineLabel=Max problems per line (0 = unlimited)
settings.maxProblemsPerLineTooltip=Limits the number of problems shown per line. Set to 0 for unlimited.
settings.enableHtmlStripping=Enable stripping of HTML in the messages
settings.enableXmlUnescaping=Enable unescaping of XML in the messages
2 changes: 2 additions & 0 deletions src/main/resources/messages/SettingsBundle_zh_CN.properties
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,7 @@ settings.additionalSeveritiesInfoDesc=\u9644\u52A0\u4FE1\u606F\u4E25\u91CD\u6027
settings.forceProblemsInOneLine=\u5F3A\u5236\u5728\u540C\u4E00\u884C\u663E\u793A\u95EE\u9898\uFF0C\u5373\u4F7F\u5B83\u4EEC\u592A\u957F\u800C\u65E0\u6CD5\u9002\u5E94
settings.useEditorFont=\u4F7F\u7528\u7F16\u8F91\u5668\u5B57\u4F53\u800C\u4E0D\u662F\u63D0\u793A\u5B57\u4F53
settings.showOnlyHighestPerLine=\u4ec5\u663e\u793a\u6bcf\u884c\u4e2d\u6700\u4e25\u91cd\u7684\u95ee\u9898
settings.maxProblemsPerLineLabel=Max problems per line (0 = unlimited)
settings.maxProblemsPerLineTooltip=Limits the number of problems shown per line. Set to 0 for unlimited.
settings.enableHtmlStripping=Enable stripping of HTML in the messages
settings.enableXmlUnescaping=Enable unescaping of XML in the messages
Loading