google / horologist

Horologist is a group of libraries that aim to supplement Wear OS developers with features that are commonly required by developers but not yet available.
https://google.github.io/horologist/
Apache License 2.0
560 stars 91 forks source link

Add twitter compose rules check #831

Closed luizgrp closed 3 weeks ago

luizgrp commented 1 year ago

WHAT

Change our builds scripts to run Twitter's Jetpack Compose Rules.

WHY

So issues like https://github.com/google/horologist/pull/830 and https://github.com/google/horologist/pull/611 are detected via code analysis instead of relying on code reviews.

HOW

The ideal would be to add the plugin with spotless but it is not supported. So this ticket is to figure out a good alternative.


Below is some context from my findings in https://github.com/google/horologist/pull/610:

Kolinter could be added as temporary measure but it does not support baselines. That would force us to fix all the issues in order to add the plugin, which is not great, or suppress each of them with annotations if possible, which is also not great as it would pollute the code.

Ktlint-gradle could be used, but its version would have to be downgraded in our project as the latest version is not currently supported. If proceeding with this option, then ktlint would have to be removed from our spotless configuration, in order to not run twice.

In overall, if we are going to add a different code analysis tool, I would prefer, if possible, to remove spotless in order to have only a single tool. Our project seems to use spotless for code analysis for the reasons below, so any alternative explored would have to provide the same functionalities:

yschimke commented 1 year ago

Maybe moved to https://github.com/mrmans0n/compose-rules?

luizgrp commented 1 year ago

Another alternative setup to try: https://github.com/slackhq/compose-lints/

mrmans0n commented 1 year ago

Apparently now ktlint-gradle works well (instead of kotlinter) with the latest ktlint version, if you go the ktlint route. They updated it not so long ago.

Goooler commented 9 months ago

This support has been finished in https://github.com/diffplug/spotless/pull/1896, we can try Spotless integration once 6.23.0 is out.

yschimke commented 3 months ago

Maybe https://github.com/j-roskopf/ComposeGuard

yschimke commented 3 weeks ago

Closing as low priority, reopen if keen to work on it.