[
https://issues.apache.org/jira/browse/FINERACT-1006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17120910#comment-17120910
]
Michael Vorburger commented on FINERACT-1006:
---------------------------------------------
[~Manthan] seeing your https://github.com/apache/fineract/pull/943 (great!) it
looks like you played with a learnt a few things about this meanwhile? Could
you elaborate a little on how you see the Checkstyle VS Spotless "relationship"
going forward? Are we saying that the most "productive" combination here may be
... how? Will Checkstyle verify the code formatting style that Spotless can
help us apply by autoformatting? Or will Spotless itself ALSO be able to check
formatting style? Would you then have Checkstyle also validate those formatting
- so kind of double check? Or do they "disagree" with each other for some
subtleties, and we will have to "choose" and move to a more "split
responsibility" - with some things in Checkstyle, and some in Spotless?
> Auto Format Source Code
> -----------------------
>
> Key: FINERACT-1006
> URL: https://issues.apache.org/jira/browse/FINERACT-1006
> Project: Apache Fineract
> Issue Type: New Feature
> Reporter: Michael Vorburger
> Assignee: Manthan Surkar
> Priority: Major
> Fix For: 1.4.0
>
>
> In https://github.com/apache/fineract/pull/933 for FINERACT-821, [~Manthan]
> exploring using an "Auto Source Code Formatter Tool", and I'm creating this
> issue to further explore and discuss that...
> Manthan originally used https://github.com/google/google-java-format, which
> seems nice at first, but when I noticed how it's hard-coded to 2 instead of 4
> space indentions, I really struggled... I respect that this can seem "silly"
> (and I agree that on such matters the most important thing is for a project
> to just pick 1 code formatting convention and then stick to it), but 2 spaces
> is a very JS/Go rule, and not used in any (open source) Java community that I
> know of. I personally feel reasonably strongly against adopting a convention
> (2 spaces) that makes all Fineract code looks different than e.g. JDK's own
> or Spring's etc. etc. code. Interestingly, even (Google's!) Android AOSP uses
> 4 not 2 space indention, see
> https://source.android.com/setup/contribute/code-style, and thus does not
> follow
> https://google.github.io/styleguide/javaguide.html#s4.2-block-indentation ...
> ;=)
> Long story short: I'm actually *FOR* further exploring auto formatting for
> this project, but if we really do do this, then how about not as a manual
> "one off", but through integrating Gradle task that any future contributor
> can easily use? But I'm *AGAINST* us using google-java-format as-is... :P
> Doing a little bit more research on this topic seems justified. Here are some
> pointers:
> * https://plugins.gradle.org/search?term=format
> * https://plugins.gradle.org/search?term=formatter
> * https://plugins.gradle.org/search?term=code+style
> *
> https://medium.com/@alexprut/integrate-google-java-style-guide-in-a-java-project-567abb6d7987
> *
> https://medium.com/@aruny3/improve-code-formatting-on-every-commit-7fbb0cdfdab6
> I have not looked more closely at all of these (but perhaps [~Manthan] you
> would be interested to do a quick comparison?), but from a quick glance,
> doesn't https://github.com/diffplug/spotless look pretty neat? It,
> apparently, supports several formatter plugins... one of them being
> google-java-format (which I really don't look, because of the 2 spaces), but
> what looking into making that use our existing
> https://github.com/apache/fineract/blob/develop/config/fineractdev-eclipse-preferences.epf,
> which I created and which should match
> https://github.com/apache/fineract/blob/develop/fineract-provider/config/checkstyle/checkstyle.xml
> ... that would be cool, but we would get 100% consistent auto-formatting in
> an IDE AND have the equivalent on the CLI through Gradle - that's the holy
> grail! ;-)
> [~awasum] [~ptuomola] your input here obviously very welcome (and anyone
> else's)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)