[
https://issues.apache.org/jira/browse/CASSANDRA-17925?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18049838#comment-18049838
]
Maxim Muzafarov commented on CASSANDRA-17925:
---------------------------------------------
Hi Benedict, sorry to hear that this caused frustration. Could you clarify what
you mean by “a waste of time”? What specific issues did you run into? There was
a discussion on this topic, and no concerns were raised at the
time:[https://lists.apache.org/thread/lr90ckt7scgs4tqjwd2t7928plngo5zl]
At the moment, there are two options:
# *IDE Hot Keys*: We’ve added support for this import order across all major
IDEs, so the standard hotkeys should work out of the box. Have you tried?
# *Local branch workaround*: If your local branch is causing issues, you can
cherry-pick this commit
[https://github.com/apache/cassandra/commit/9a30a3469c274cc1bde777b350c93965a6e14220].
It includes the required configuration, after which you can simply use your
IDE’s hotkeys on the modified files (no manual reordering is needed of course).
We could of course disable checkstyle for these rules, but that feels
counterintuitive for me given that the import order is part of our code style.
Another option would be to add an automatic import-order fix to the build, so
developers don’t have to deal with this manually at all. wdyt?
I’m happy to help if you have any problems with your local branches, just let
me know.
> Java source code should have sorted imports as defined in the codestyle
> -----------------------------------------------------------------------
>
> Key: CASSANDRA-17925
> URL: https://issues.apache.org/jira/browse/CASSANDRA-17925
> Project: Apache Cassandra
> Issue Type: Improvement
> Components: Build
> Reporter: Stefan Miklosovic
> Assignee: Maxim Muzafarov
> Priority: Normal
> Labels: code-polishing
> Fix For: 5.1
>
> Attachments: ci_summary_Mmuzaf_cassandra-17925_59.html,
> results_details_Mmuzaf_cassandra-17925_59.tar.xz
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> After we cleaned all unused imports in CASSANDRA-17876, there is one more
> task remaining to be done - to add checkstyle for imports order and enforce
> this on build time.
> When the project is imported into IDEA, there is a helper target on Ant
> called "generate-idea-files". ide/idea/codeStyleSettings.xml contains this:
> {code:java}
> <option name="IMPORT_LAYOUT_TABLE">
> <value>
> <package name="java" withSubpackages="true" static="false" />
> <package name="javax" withSubpackages="true" static="false" />
> <emptyLine />
> <package name="com.google.common" withSubpackages="true"
> static="false" />
> <package name="org.apache.log4j" withSubpackages="true"
> static="false" />
> <package name="org.apache.commons" withSubpackages="true"
> static="false" />
> <package name="org.cliffc.high_scale_lib" withSubpackages="true"
> static="false" />
> <package name="org.junit" withSubpackages="true" static="false" />
> <package name="org.slf4j" withSubpackages="true" static="false" />
> <emptyLine />
> <package name="" withSubpackages="true" static="false" />
> <emptyLine />
> <package name="" withSubpackages="true" static="true" />
> </value>
> </option>
> {code}
> This code style is also mentioned in the web page here (minus some details
> which are present in above configuration snippet but not on the web page):
> [https://cassandra.apache.org/_/development/code_style.html] (at the very
> bottom).
> However, when one runs "Optimise imports" in the context menu after
> right-clicking on org.cassandra.apache package, it will refactor the imports
> and it results with hundreds of changes.
> This means that the source code, as-is, does not adhere to the self-imposed
> code style we ship for IDEA.
> If we fix this, we should add checkstyle for it like this:
> {code:java}
> <module name="ImportOrder">
> <property name="groups"
> value="/(^java\.|javax)/,/(com\.google\.common|org\.apache\.log4j|org\.apache\.commons|org\.cliffc\.high_scale_lib|org\.junit|org\.slf4j)/"/>
> <property name="ordered" value="true"/>
> <property name="separated" value="true"/>
> <property name="option" value="bottom"/>
> <property name="separatedStaticGroups" value="false"/>
> <property name="sortStaticImportsAlphabetically" value="true"/>
> </module>
> {code}
> This checkstyle on import order will pass on the source code we run the
> import optimization in the context menu on.
> There is also no enforcement on "all star" imports (org.some.pkg.*).
> Checkstyle has specific module for this:
> [https://checkstyle.org/config_imports.html#AvoidStarImport]
> I propose we should stop to use all-star imports. Same argument holds as
> described there: Rationale: Importing all classes from a package or static
> members from a class leads to tight coupling between packages or classes and
> might lead to problems when a new version of a library introduces name
> clashes.
> This should be applied to test checktyle as well and the source code should
> be refactored on imports too.
> This should be done on cassandra-4.1 as well as for trunk.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]