You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Maxim Muzafarov (Jira)" <ji...@apache.org> on 2022/11/25 13:31:00 UTC

[jira] [Assigned] (CASSANDRA-17925) Java source code should have sorted imports as defined in the codestyle

     [ https://issues.apache.org/jira/browse/CASSANDRA-17925?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maxim Muzafarov reassigned CASSANDRA-17925:
-------------------------------------------

    Assignee: Maxim Muzafarov

> 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: Cassandra
>          Issue Type: Improvement
>            Reporter: Stefan Miklosovic
>            Assignee: Maxim Muzafarov
>            Priority: Normal
>
> 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: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org