Hi,

I applied Spotless and Google Java format in the [1] branch, which contains
two commits, one is the POM configuration of spotless, and the other is the
change after the code is automatically formatted. I'm glad to see that we
have automatically fixed many of our problems of mixing 2-space and 4-space
in indents.

I have merged one PR to spotless branch by following steps:

# `asf` is repo of Apache IoTDD
git fetch asf pull/2667/head:PR2667
git checkout PR2667
git cherry-pick 5ef3baaf1915095b74773b110a8f9e4e3c82429b
mvn com.diffplug.spotless:spotless-maven-plugin:check
mvn com.diffplug.spotless:spotless-maven-plugin:apply
git add .
git commit -m 'Apply spotless'
git rebase asf_spotless
// Resolve your conflict
git rebase --continue
// After squash your commits
gck asf_spotless
git merge PR2667
git push asf asf_spotless:spotless

If you agree to apply Spotless, I will create JIRA. and OPEN the PR for
apply Spotless add related documents. The document will involve some
configuration instructions, such as IDEA configuration:

1. Install google-java-format plugin
2. In the plugin settings, enable the plugin and change the code style to
"GOOGLE" (2-space indents)
3. Install the Save Actions plugin
4. Enable the plugin, along with "Optimize imports" and "Reformat file"
5. In the "Save Actions" settings page, setup a "File Path Inclusion" for
`.*\.java`. 6. ...

and other config items, such as "importOrder" etc.

What are your thoughts?

Best,
Jincheng

[1] https://github.com/apache/iotdb/tree/spotless



jincheng sun <sunjincheng...@gmail.com> 于2021年2月12日周五 上午7:20写道:

> Hi,
>
> Thank you all for the feedback Chris,Dawei and Xiangdong!
>
> @Chris You're right. We don't want developers to pay too much attention to
> code styles, so I would like to make more efforts to make code styles
> automatic, transparent to developers (try our best), when we have finished
> the agreed configuration of Spotless,  ` mvn spotless:check ` and `mvn
> spotless:apply ` can do check and correct work for us.
>
> @Dawei Thank you very much for trying and sharing the advanced functions
> of Spotless. About the problems you encounter, configuring the version of
> GoogleJavaformat should be able to solve the problem. The version 1.7 of
> GoogleJavaformat can work well on JDK1.8:
>
> <configuration>
>       <java>
>          <googleJavaFormat>
>             <version>1.7</version>
>             ...
>          </googleJavaFormat>
>          ...
>          ...
>       <java>
> </configuration>
>
> @Xiangdong  You're right. Spotless will bring some changes for history
> code, fortunately, Spotless can automatically apply the style and helped to
> easily rebase the PRs, and there is an useful feature in Spotless is
> "ratchet" [1]  With this, we can set up Spotless to only apply it's rules
> to files that were changed after a configured commit. This would allow a
> gradual application of the new coding style instead of one big change.  Of
> course, I'd like to provide a PoC to let you see the changes after the
> plug-in of Spotless has applied.
>
> Thanks again for all of your feedback. I'd like to show a PoC later.
>
> Best,
> Jincheng
>
> [1]
> https://github.com/diffplug/spotless/blob/main/plugin-maven/README.md#ratchet
>
>
> Xiangdong Huang <saint...@gmail.com> 于2021年2月10日周三 下午10:19写道:
>
>> Take away:
>> I opt for uniforming the code style.  But we have to consider how
>> to maintain current opened PRs (we have about 40+ PRs) to solve potential
>> conflicts.
>>
>> Details:
>> I opt for uniforming the code style.
>> In some PRs, we can find many lines are changed just because the indent is
>> changed...
>>
>> Yes we are using google style, and we have a maven checkstyle plugin,
>> indeed.
>>
>> If you see files under `target`, you can find the checkout-style.xml file.
>> Or, if you add `<consoleOutput>true</consoleOutput>` to the configuration
>> of the plugin (about line 769 in pom.xml), and run `mvn validate`,
>> we can see many warnings on the console..
>> If we want to require all contributors obey the style, the
>> " <violationSeverity>warning</violationSeverity> " configuration is
>> needed,
>> which will
>> lead to the build failed if there is any violation.
>>
>> The current plugin does not modify the source files automatically but
>> Spotless plugin can do that.
>>
>> However, if too many codes are changed, we have to consider the impact of
>> tracing the history of codes, and we have to consider how to manually
>> maintain current opened PRs (we have about 40+ PRs) to solve confliction.
>>
>> I'd like to preview the changes caused by the plugin. Can you show a patch
>> file or a snippet?
>>
>> Best,
>> -----------------------------------
>> Xiangdong Huang
>> School of Software, Tsinghua University
>>
>>  黄向东
>> 清华大学 软件学院
>>
>>
>> Dawei Liu <atoi...@163.com> 于2021年2月10日周三 下午10:05写道:
>>
>> > Hi jincheng,
>> >
>> >
>> > Thank you very much for starting this discussion
>> >
>> >
>> > I found a nice feature in the tool that automatically
>> > </removesUnusedImports>,
>> > which is a common problem in reviews because the IDE collapses imports
>> by
>> > default.
>> >
>> >
>> > Unfortunately, it didn't work in my local (JDK 1.8), and he told me:
>> > Com/Google/googlejavaformat/Java/JavaFormatterOptions has had been
>> > compiled by a more recent version of the Java Runtime (class file
>> version
>> > 55.0).
>> > This version of the Java Runtime only recognizes the class file versions
>> > up to 52.0
>> >
>> >
>> > Do I need to upgrade my JDK?
>> >
>> >
>> > Dawei
>> > On 02/9/2021 16:14,Christofer Dutz<christofer.d...@c-ware.de> wrote:
>> > Perhaps it's just me, but ...
>> >
>> > If discussing formatting issues has been consuming a lot of your time, I
>> > would consider this time wasted. Especially as for newcomers this is
>> > particularly frustrating if you sort of provide the solution for a real
>> > problem and your response is "Yeah .... thanks fort hat ... but we use 4
>> > spaces indentation and curly braces at the END of EVERY condition" ...
>> I've
>> > been in that situation multiple times and some times just wen't away
>> cause
>> > I just thought "WTF ... are these folks serious? I don't wanna be part
>> of
>> > such a group".
>> >
>> > Of course would an automated plugin help. In Go I am seeing this happen
>> > auotmatically all the time. But we should ask ourselves, if paying too
>> much
>> > attention to some formatting rules is good.
>> >
>> > But ... that's just my personal opinion.
>> >
>> > Chris
>> >
>> >
>> > -----Ursprüngliche Nachricht-----
>> > Von: jincheng sun <sunjincheng...@gmail.com>
>> > Gesendet: Dienstag, 9. Februar 2021 07:39
>> > An: dev@iotdb.apache.org
>> > Betreff: [DISCUSS] I would like to propose using Spotless for IoTDB
>> coding
>> > style check
>> >
>> > Hi folks,
>> >
>> > I found that many projects use Spotless to save the time of both
>> > contributors and reviewers.
>> >
>> > I like Spotless[1] because it can be used to both check and apply a
>> style.
>> > Then we need a formatter(e.g.: google-java-format) that works with
>> > Spotless. The pretty good thing about Spotless is that it serves as a
>> > verifier for CI but can also apply the configured style automatically.
>> That
>> > is, for the programmer all we should to do is `mvn spotless:apply` to
>> fix
>> > any style violations.
>> >
>> > We also have to decide on a coding style if we decide to use Spotless.
>> and
>> > I would propose google-java-format. (It's seems IoTDB project already
>> > prefer Google's code specification, at present, iotdb uses GoogleStyle
>> [2])
>> >
>> > So what benefits will Spotless bring us:
>> >
>> > - No longer fussy about the coding style in reviews, which makes it
>> easier
>> > for reviewers and contributors to understand
>> > - There is no need to fix check style errors manually because Spotless
>> can
>> > fix them automatically
>> >
>> > Currently, Spotless has been used in many projects, such as: Apache Beam
>> > [3], Apache Flink [4], Apache Kafka [5] Apache avro [6] etc.
>> >
>> > In short words, I believe that the introduction of Spotless will save
>> us a
>> > lot of time and focus more on the development of features.
>> > If you agree to use Spotless, I will create the JIRA. for tracking and
>> add
>> > the detailed design and POC. What are your thoughts?
>> >
>> > ---------
>> > Finally, on the occasion of the Chinese Lunar New Year, I wish community
>> > of IoTDB better and better. I wish you a happy new year, all the best
>> for
>> > 2021. :)
>> > ㊗️福大家,牛年大吉!
>> >
>> > Best,
>> > Jincheng
>> > 2021.02.09
>> >
>> > [1] https://github.com/diffplug/spotless
>> > [2] https://github.com/apache/iotdb/blob/master/java-google-style.xml
>> > [3]
>> >
>> >
>> https://github.com/apache/beam/blob/b74fcf7b30d956fb42830d652a57b265a1546973/buildSrc/build.gradle#L23
>> > [4]
>> >
>> >
>> https://github.com/apache/flink/blob/4a5ef8af0bbc49d738717ae477576c172e60e62c/pom.xml#L159
>> > [5]
>> >
>> >
>> https://github.com/apache/kafka/blob/42a9355e606bd2bbdb7fd0dd348805e6666dc189/build.gradle#L44
>> > [6]
>> >
>> >
>> https://github.com/apache/avro/blob/8026c8ffe4ef67ab419dba73910636bf2c1a691c/lang/java/pom.xml#L307-L334
>> >
>>
>

Reply via email to