The difference is between `/**` and `/*`, i.e., we have very strict control on javadoc annotation, and multi line annotation will be more flexible.
Xiangdong Huang <saint...@gmail.com> 于2021年2月17日周三 下午9:40写道: > Hi, > > why moving comments ahead of a class into the inside of the class can > avoid that? > > ----------------------------------- > Xiangdong Huang > School of Software, Tsinghua University > > 黄向东 > 清华大学 软件学院 > > > jincheng sun <sunjincheng...@gmail.com> 于2021年2月17日周三 下午6:21写道: > > > Thank you for your positive feedback, Dawei ! > > > > #1: May be we can turn special class comments into multiline comments for > > ensure example readability. more detail can be find [1]. > > #2: We can fix the incorrect license headers, i.e., `/**` to `/*` in > > license header. > > > > It would be great if you have time to review the PR and have your + 1 in > > PR. Any feedback is welcome ! > > > > Best, > > Jincheng > > > > [1] > > > > > https://github.com/apache/iotdb/pull/2684/commits/3912051fab0e5df0eb966bb402df04d6b015a3c8 > > > > > > > > Dawei Liu <atoi...@163.com> 于2021年2月17日周三 下午3:00写道: > > > > > Hi, > > > > > > > > > +1 > > > > > > > > > But there are a few minor issues to watch out for: > > > > > > > > > 1.Formed comments will be corrupted, example: > > > original: > > > * +-----------------------+ +-----------------------+ > > > +-----------------------+ > > > * |1 |0 |1 |1 |0 |0 |1 |1 | |1 |0 |1 |1 |0 |0 |0 |0 | |0 |1 |0 |1 |1 > |0 > > > |1 |0 | > > > * +-----------------------+ +-----------------------+ > > > +-----------------------+ > > > modified: > > > * <p>+-----------------------+ +-----------------------+ > > > +-----------------------+ |1 |0 |1 |1 |0 > > > * |0 |1 |1 | |1 |0 |1 |1 |0 |0 |0 |0 | |0 |1 |0 |1 |1 |0 |1 |0 | > > > +-----------------------+ > > > * +-----------------------+ +-----------------------+ +-----+ +-----+ > > > +---------+ +-----+ +-----+ > > > > > > > > > > > > > > > 2.Some license headers that use /** should be changed to /*, otherwise > > the > > > content will be changed, example: > > > original: > > > /** > > > * Licensed to the Apache Software Foundation (ASF) under one > > > * or more contributor license agreements. See the NOTICE file > > > * distributed with this work for additional information > > > * regarding copyright ownership. The ASF licenses this file > > > * to you under the Apache License, Version 2.0 (the > > > * "License"); you may not use this file except in compliance > > > * with the License. You may obtain a copy of the License at > > > * > > > * http://www.apache.org/licenses/LICENSE-2.0 > > > * > > > * Unless required by applicable law or agreed to in writing, > > > * software distributed under the License is distributed on an > > > * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > > > * KIND, either express or implied. See the License for the > > > * specific language governing permissions and limitations > > > * under the License. > > > */ > > > > > > > > > modified: > > > /** > > > * Licensed to the Apache Software Foundation (ASF) under one or more > > > contributor license > > > * agreements. See the NOTICE file distributed with this work for > > > additional information regarding > > > * copyright ownership. The ASF licenses this file to you under the > > Apache > > > License, Version 2.0 (the > > > * "License"); you may not use this file except in compliance with the > > > License. You may obtain a > > > * copy of the License at > > > * > > > * <p>http://www.apache.org/licenses/LICENSE-2.0 > > > * > > > * <p>Unless required by applicable law or agreed to in writing, > software > > > distributed under the > > > * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR > > > CONDITIONS OF ANY KIND, either > > > * express or implied. See the License for the specific language > > governing > > > permissions and > > > * limitations under the License. > > > */ > > > > > > > > > 3. Personally, lambda expressions are not very friendly to me > > > original: > > > localMember.getSerialToParallelPool().submit(() -> { > > > try { > > > long result = client.startElection(request); > > > handler.onComplete(result); > > > } catch (Exception e) { > > > handler.onError(e); > > > } finally { > > > ClientUtils.putBackSyncHeartbeatClient(client); > > > } > > > }); > > > modified: > > > localMember > > > .getSerialToParallelPool() > > > .submit( > > > () -> { > > > try { > > > long result = client.startElection(request); > > > handler.onComplete(result); > > > } catch (Exception e) { > > > handler.onError(e); > > > } finally { > > > ClientUtils.putBackSyncHeartbeatClient(client); > > > } > > > }); > > > > > > > > > > > > > > > > > > > > > Dawei > > > On 02/16/2021 15:37,jincheng sun<sunjincheng...@gmail.com> wrote: > > > +1 > > > > > > Best, > > > Jincheng > > > > > > > > > weizihan0110 <wzh1007181...@163.com> 于2021年2月16日周二 上午11:16写道: > > > > > > +1 > > > > > > > > > | | > > > Al Wei > > > | > > > | > > > 邮箱:wzh1007181...@163.com > > > | > > > > > > 签名由 网易邮箱大师 定制 > > > > > > On 02/16/2021 10:44, Xiangdong Huang wrote: > > > +1. 【please pay attention】, If no -1, I will merge the PR [1] (+70K and > > > -69K lines of codes). > > > > > > I have tried the commands for solving conflicts. No much work to do. > > > > > > [1] https://github.com/apache/iotdb/pull/2684 > > > > > > Best, > > > ----------------------------------- > > > Xiangdong Huang > > > School of Software, Tsinghua University > > > > > > 黄向东 > > > 清华大学 软件学院 > > > > > > > > > jincheng sun <sunjincheng...@gmail.com> 于2021年2月15日周一 下午2:32写道: > > > > > > 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 > > > > > > > > > > > > > > > > > > > > >