Skip to content
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

Support for Kotlin Formatter Detekt #143

Open
JLLeitschuh opened this issue Sep 21, 2017 · 20 comments
Open

Support for Kotlin Formatter Detekt #143

JLLeitschuh opened this issue Sep 21, 2017 · 20 comments

Comments

@JLLeitschuh
Copy link
Member

There's another formatter with much more configuration called Detekt that some kotlin projects may want to use instead of Ktlint.

(Personally, I still love Ktlint but some people want options). It would be nice if there was an integration with Detekt built in to Spotless..

@nedtwigg
Copy link
Member

Sounds like it'd be a great addition. Here's how to add it, we'd be happy to help any contributor if they get stuck.

saschpe added a commit to saschpe/spotless that referenced this issue Mar 8, 2019
Another option to format Kotlin and KotlinScript files.

See: https://github.com/arturbosch/detekt
Resolves: diffplug#143
saschpe added a commit to saschpe/spotless that referenced this issue Mar 19, 2019
Another option to format Kotlin and KotlinScript files.

See: https://github.com/arturbosch/detekt
Resolves: diffplug#143
@nedtwigg
Copy link
Member

Hi @saschpe. Looks like you've done a lot of great work, but the reflection part is pretty tricky. Just wanted to let you know that #524 might be an easier approach.

@saschpe
Copy link

saschpe commented Feb 14, 2020

Ok, I'll take a look.

@LifeIsStrange
Copy link

LifeIsStrange commented Jun 18, 2020

Just to say that I believe that detekt and klint can (or at least should be able to) be used altogether. A typical use case would be to lint with klint and to do static analysis with detekt.

@erikhuizinga
Copy link

Any progress? I see there are commits referencing this issue, but there is no PR. @saschpe is it a matter of opening a PR from your detekt branch in your fork, or are there any issues?

@saschpe
Copy link

saschpe commented Nov 20, 2020

Not really, I lost interest once Klint development started again. A while ago, it had very controversial default settings that where not modifiable. This changed so at least I don't have any further need for Detekt. Sorry.

@nedtwigg
Copy link
Member

ktfmt is another option which works well

@jbduncan
Copy link
Member

I agree with @nedtwigg's comment on ktfmt! But just to note that it requires Java 11, so it doesn't yet work with Android projects.

I understand though that the next Android Studio version will be based on Java 11, which should be a big milestone towards allowing Android projects to be built with Java 11, and thus allowing ktfmt to be adopted in that ecosystem.

@erikhuizinga
Copy link

Does ktfmt do static code analysis like detekt, or is it just a formatter/style linter like ktlint?

@nedtwigg
Copy link
Member

Just a formatter. We'll merge anything that someone is actually using, but I don't think Spotless provides much benefit to static analysis tools. See this discussion for details.

@erikhuizinga
Copy link

Then I guess that you can close this issue? Any future inquiries about detekt will find this issue or can be forwarded to it, unless the needs/possibilities change.

For now the recommendation is to use detekt separately.

@nedtwigg
Copy link
Member

From @rougsig in issue above:

The main functionality that I want to get from usage spotless with detekt is git ratchet.

That's a good usecase! As mentioned earlier in this thread:

We'll merge anything that someone is actually using

Reopening this issue for now until rougsig finished their PR or gives up :)

@nedtwigg nedtwigg reopened this Jan 12, 2022
@emismo
Copy link

emismo commented May 16, 2023

any update on this ?

@cortinico
Copy link

Nicola here from the Detekt team: we'd love to see this happening. If someone is looking into adding support for Detekt to Spotless we can provide some help

@erfansn
Copy link

erfansn commented Apr 27, 2024

?

@OksiBlack
Copy link

Is there a hope? @rougsig

@rougsig
Copy link

rougsig commented May 30, 2024

@OksiBlack i think no

@dewantawsif
Copy link

Hello @nedtwigg I'm playing around the code-base to add detekt support (trying to mimic the other implementations). I see that I have to make an implementation of FormatterFunc.NeedsFile. Its function applyWithFile(String unix, File file) requires a string to be returned. I can't quite figure our what's the purpose of that string. Some insight will be helpful.

@nedtwigg
Copy link
Member

nedtwigg commented Jul 5, 2024

The function should not read or write to the contents of the file, the file is provided only for its path. The function should read the unix string, and return the formatted string.

@dewantawsif
Copy link

dewantawsif commented Jul 5, 2024

Given detekt's nature I don't think we can integrate it with spotless. It doesn't exactly focus on formatting code rather it focus on the code analysis. You can format with it but the default rule sets doesn't even support it. More info:

--auto-correct, -ac
      Allow rules to auto correct code if they support it. The default rule 
      sets do NOT support auto correcting and won't change any line in the 
      users code base. However custom rules can be written to support auto 
      correcting. The additional 'formatting' rule set, added with 
      '--plugins', does support it and needs this flag.
      Default: false

Point to be noted that the formatting rule set is a wrapper on ktlint

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests