Skip to content

Allow to output multiple errors when using ktlint #1403

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed
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
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
### Fixed
* Don't treat `@Value` as a type annotation [#1367](https://github.com/diffplug/spotless/pull/1367)
* Support `ktlint_disabled_rules` in `ktlint` 0.47.x [#1378](https://github.com/diffplug/spotless/pull/1378)
* Allow to output multiple errors when using `ktlint` [#1403](https://github.com/diffplug/spotless/pull/1403)

## [2.30.0] - 2022-09-14
### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot31Dot0Adapter implements KtLintCompatAdapter {
private final ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private final ArrayList<String> errors;

FormatterCallback(final ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -45,7 +52,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

final List<RuleSet> rulesets = new ArrayList<>();
rulesets.add(new StandardRuleSetProvider().get());
Expand All @@ -54,10 +61,16 @@ public String format(final String text, final String name, final boolean isScrip
rulesets.add(new ExperimentalRuleSetProvider().get());
}

return KtLint.INSTANCE.format(
final String result = KtLint.INSTANCE.format(
text,
rulesets,
userData,
formatterCallback);

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot32Dot0Adapter implements KtLintCompatAdapter {
private final ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private final ArrayList<String> errors;

FormatterCallback(final ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -45,7 +52,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

final List<RuleSet> rulesets = new ArrayList<>();
rulesets.add(new StandardRuleSetProvider().get());
Expand All @@ -54,10 +61,16 @@ public String format(final String text, final String name, final boolean isScrip
rulesets.add(new ExperimentalRuleSetProvider().get());
}

return KtLint.INSTANCE.format(
final String result = KtLint.INSTANCE.format(
text,
rulesets,
userData,
formatterCallback);

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot34Dot2Adapter implements KtLintCompatAdapter {
private final ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private final ArrayList<String> errors;

FormatterCallback(final ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -45,7 +52,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

final List<RuleSet> rulesets = new ArrayList<>();
rulesets.add(new StandardRuleSetProvider().get());
Expand All @@ -54,7 +61,7 @@ public String format(final String text, final String name, final boolean isScrip
rulesets.add(new ExperimentalRuleSetProvider().get());
}

return KtLint.INSTANCE.format(new KtLint.Params(
final String result = KtLint.INSTANCE.format(new KtLint.Params(
name,
text,
rulesets,
Expand All @@ -63,5 +70,11 @@ public String format(final String text, final String name, final boolean isScrip
isScript,
null,
false));

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot45Dot2Adapter implements KtLintCompatAdapter {
private ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private ArrayList<String> errors;

FormatterCallback(final ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -53,7 +60,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

final List<RuleSet> rulesets = new ArrayList<>();
rulesets.add(new StandardRuleSetProvider().get());
Expand All @@ -69,7 +76,7 @@ public String format(final String text, final String name, final boolean isScrip
editorConfigOverride = createEditorConfigOverride(rulesets, editorConfigOverrideMap);
}

return KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
final String result = KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
name,
text,
rulesets,
Expand All @@ -80,6 +87,12 @@ public String format(final String text, final String name, final boolean isScrip
false,
editorConfigOverride,
false));

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot46Dot0Adapter implements KtLintCompatAdapter {
private final ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private final ArrayList<String> errors;

FormatterCallback(ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -53,7 +60,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

final List<RuleSet> rulesets = new ArrayList<>();
rulesets.add(new StandardRuleSetProvider().get());
Expand All @@ -69,7 +76,8 @@ public String format(final String text, final String name, final boolean isScrip
editorConfigOverride = createEditorConfigOverride(rulesets, editorConfigOverrideMap);
}

return KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
errors.clear();
final String result = KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
name,
text,
rulesets,
Expand All @@ -80,6 +88,12 @@ public String format(final String text, final String name, final boolean isScrip
false,
editorConfigOverride,
false));

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,19 @@
import kotlin.jvm.functions.Function2;

public class KtLintCompat0Dot47Dot0Adapter implements KtLintCompatAdapter {
private final ArrayList<String> errors = new ArrayList<>();

static class FormatterCallback implements Function2<LintError, Boolean, Unit> {
private final ArrayList<String> errors;

FormatterCallback(ArrayList<String> errors) {
this.errors = errors;
}

@Override
public Unit invoke(LintError lint, Boolean corrected) {
if (!corrected) {
KtLintCompatReporting.report(lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
KtLintCompatReporting.addReport(errors, lint.getLine(), lint.getCol(), lint.getRuleId(), lint.getDetail());
}
return null;
}
Expand All @@ -58,7 +65,7 @@ public String format(final String text, final String name, final boolean isScrip
final boolean useExperimental,
final Map<String, String> userData,
final Map<String, Object> editorConfigOverrideMap) {
final FormatterCallback formatterCallback = new FormatterCallback();
final FormatterCallback formatterCallback = new FormatterCallback(errors);

Set<RuleProvider> allRuleProviders = new LinkedHashSet<>(
new StandardRuleSetProvider().getRuleProviders());
Expand All @@ -76,7 +83,8 @@ public String format(final String text, final String name, final boolean isScrip
editorConfigOverrideMap);
}

return KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
errors.clear();
final String result = KtLint.INSTANCE.format(new KtLint.ExperimentalParams(
name,
text,
emptySet(),
Expand All @@ -89,6 +97,12 @@ public String format(final String text, final String name, final boolean isScrip
EditorConfigDefaults.Companion.getEmptyEditorConfigDefaults(),
editorConfigOverride,
false));

if (!errors.isEmpty()) {
KtLintCompatReporting.report(errors);
}

return result;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,24 @@
*/
package com.diffplug.spotless.glue.ktlint.compat;

import java.util.ArrayList;

final class KtLintCompatReporting {

private KtLintCompatReporting() {}

static void report(int line, int column, String ruleId, String detail) {
throw new AssertionError("Error on line: " + line + ", column: " + column + "\nrule: " + ruleId + "\n" + detail);
static void addReport(ArrayList<String> errors, int line, int column, String ruleId, String detail) {
StringBuilder sb = new StringBuilder("Error on line: ");
sb.append(line).append(", column: ").append(column).append(System.lineSeparator()).append("rule: ").append(ruleId).append(System.lineSeparator()).append(detail);
errors.add(sb.toString());
}

static String report(final ArrayList<String> errors) {
StringBuilder output = new StringBuilder();
output.append("There are ").append(errors.size()).append(" unfixed errors:").append(System.lineSeparator());
for (final String error : errors) {
output.append(error).append(System.lineSeparator());
}
throw new AssertionError(output);
}
}
1 change: 1 addition & 0 deletions plugin-gradle/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
### Fixed
* Don't treat `@Value` as a type annotation [#1367](https://github.com/diffplug/spotless/pull/1367)
* Support `ktlint_disabled_rules` in `ktlint` 0.47.x [#1378](https://github.com/diffplug/spotless/pull/1378)
* Allow to output multiple errors when using `ktlint` [#1403](https://github.com/diffplug/spotless/pull/1403)

## [6.11.0] - 2022-09-14
### Added
Expand Down
1 change: 1 addition & 0 deletions plugin-maven/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
### Fixed
* Don't treat `@Value` as a type annotation [#1367](https://github.com/diffplug/spotless/pull/1367)
* Support `ktlint_disabled_rules` in `ktlint` 0.47.x [#1378](https://github.com/diffplug/spotless/pull/1378)
* Allow to output multiple errors when using `ktlint` [#1403](https://github.com/diffplug/spotless/pull/1403)

## [2.27.2] - 2022-10-10
### Fixed
Expand Down
Loading