Stephen, Anyhow, changing ordering at this will actually introduce more work.
Sincerely yours, Ivan Zlenko. On Mon, 10 Feb 2025 at 17:47, Stephen O'Donnell <sodonn...@cloudera.com.invalid> wrote: > Ivan, > > Facts beat hand wavy assertions. You are of course wrong, there is a > pattern in the code, but I was also wrong. The code has many more files > with static imports first. I asked some AI to create me a script to check, > and it gave me: > > > import os > import re > > def find_java_files_with_static_imports_first(directory): > java_files_with_issues = [] > > for root, _, files in os.walk(directory): > for file in files: > if file.endswith(".java"): > file_path = os.path.join(root, file) > with open(file_path, 'r') as f: > content = f.read() > static_imports = re.findall(r'^import static .+;$', > content, re.MULTILINE) > non_static_imports = re.findall(r'^import > (?!static).+;$', content, re.MULTILINE) > > if static_imports and non_static_imports: > first_static_import = > content.find(static_imports[0]) > first_non_static_import = > content.find(non_static_imports[0]) > > if first_static_import < first_non_static_import: > java_files_with_issues.append(file_path) > > return java_files_with_issues > > directory = '/Users/sodonnell/source/ozone2' > files_with_issues = find_java_files_with_static_imports_first(directory) > > if files_with_issues: > print("Java files with static imports before non-static imports:") > for file in files_with_issues: > print(file) > else: > print("No issues found.") > > > Running that: > > % python3 find.py | wc -l > 220 > > Changing "if first_static_import < first_non_static_import:" to "if > first_static_import > first_non_static_import:" > > % python3 find.py | wc -l > 1552 > > So it is much more common to have the static imports first. I checked a few > of the output files by hand, and the output appears correct. > > > On Mon, Feb 10, 2025 at 12:27 PM Ivan Zlenko <ivan.zle...@gmail.com> > wrote: > > > Stephen, > > > > Look, it was my first line of thought to come up with a general pattern > for > > a checkstyle, so it will be easier to change and review. > > But after going through the whole Ozone code base and creating 33 > branches > > with fixes I can safely say - there is no pattern. > > > > Sincerely yours, > > Ivan Zlenko. > > > > On Mon, 10 Feb 2025 at 16:41, Stephen O'Donnell > > <sodonn...@cloudera.com.invalid> wrote: > > > > > >From my observation it is 50/50 for Ozone codebase in terms of > > > static/non-static imports ordering. > > > > > > I happened to have 9 random files open in Intellij, and checked them. > All > > > had static imports last, and based on my experience on the project over > > the > > > last 5 years, statics are almost always last. Possibly that is an > > Intellij > > > default and that is why. So I would encourage actually checking this > > 50:50 > > > assertion and picking the one that is actually correct, rather than > > > creating unnecessary change in the code base. These kind of changes > make > > > backports to older branches more difficult, as they will nearly always > > > cause conflicts. > > > > > > > > > > > > On Mon, Feb 10, 2025 at 10:20 AM Ivan Zlenko <ivan.zle...@gmail.com> > > > wrote: > > > > > > > Sammi, > > > > > > > > From my observation it is 50/50 for Ozone codebase in terms of > > > > static/non-static imports ordering. > > > > As I've said before I've already finished with Ozone checkstyle for > all > > > > modules and now waiting on the first to be merged so I can create all > > > > follow up pull requests. > > > > > > > > Sincerely yours, > > > > Ivan Zlenko. > > > > > > > > On Mon, 10 Feb 2025 at 15:15, Sammi Chen <sammic...@apache.org> > wrote: > > > > > > > > > Ivan, > > > > > > > > > > Thank you for the explanation. I adjusted the intellij > configuration > > > > > accordingly. > > > > > > > > > > There is one observation. I'm using "IntelliJ IDEA 2022.1.3" which > > > seems > > > > > by default to put static imports after normal imports, which is the > > > > > opposite order of the new proposal. > > > > > > > > > > If we use the new order, then the majority of source code files > need > > to > > > > be > > > > > updated, which will be a lot of effort. > > > > > > > > > > Shall we keep using the current non-static first then static order? > > As > > > > long > > > > > as we follow the same order, we can achieve a consistent style > too. > > > > > > > > > > Bests, > > > > > Sammi > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, 10 Feb 2025 at 17:46, Ivan Zlenko <ivan.zle...@gmail.com> > > > wrote: > > > > > > > > > > > Hi, Sammi. > > > > > > > > > > > > > BTW, I 'm not sure if Intellij has any way to help enforce > these > > > > rules > > > > > > so it would be easy to follow them. > > > > > > > > > > > > It will be straightforward to set up these rules in IntelliJ > Idea. > > > > Right > > > > > > now I have changes for all modules in Ozone to make them > compliant > > to > > > > the > > > > > > new checkstyle and all changes were done in an almost automatic > way > > > > using > > > > > > the "Optimize imports on the fly" option. > > > > > > > > > > > > The only thing you need to do is the following: > > > > > > 1. Set class count for * import into something like 999, to > prevent > > > any > > > > > > attempt to add * imports. > > > > > > 2. Set layout as following: > > > > > > import static all other imports > > > > > > <blank line> > > > > > > import all other imports. > > > > > > > > > > > > > "customImportOrderRules" and "tokens", can we have a little > > > > explanation > > > > > > of the rule here? > > > > > > > > > > > > The rules are pretty simple: sort all imports in alphabetical > > order, > > > > > > separate in 2 groups starting with static imports and ending with > > > > common > > > > > > imports, groups separated by whitespace. > > > > > > > > > > > > Sincerely yours, > > > > > > Ivan Zlenko. > > > > > > > > > > > > > > > > > > On Mon, 10 Feb 2025 at 14:34, Sammi Chen <sammic...@apache.org> > > > wrote: > > > > > > > > > > > > > Thanks Attila and Ivan working on this improvement. > > > > > > > > > > > > > > IIUC, the major enforced rules of imports are > > > > > > > > > > > > > > <module name="CustomImportOrder"> > > > > > > > > <property name="sortImportsInGroupAlphabetically" > > > > > > > > value="true"/> > > > > > > > > <property name="separateLineBetweenGroups" > > > > value="true"/> > > > > > > > > <property name="customImportOrderRules" > > > > > > > > value="STATIC###THIRD_PARTY_PACKAGE"/> > > > > > > > > <property name="tokens" value="IMPORT, > > STATIC_IMPORT, > > > > > > > > PACKAGE_DEF"/> > > > > > > > > </module> > > > > > > > > > > > > > > > > > > > > > "sortImportsInGroupAlphabetically" and > > "separateLineBetweenGroups" > > > > look > > > > > > > straightforward. > > > > > > > "customImportOrderRules" and "tokens", can we have a little > > > > explanation > > > > > > of > > > > > > > the rule here? > > > > > > > > > > > > > > BTW, I 'm not sure if Intellij has any way to help enforce > these > > > > rules > > > > > so > > > > > > > it would be easy to follow them. > > > > > > > > > > > > > > Bests, > > > > > > > Sammi > > > > > > > > > > > > > > On Mon, 10 Feb 2025 at 17:02, Attila Doroszlai < > > > > adorosz...@apache.org> > > > > > > > wrote: > > > > > > > > > > > > > > > Hi Ozone developers, > > > > > > > > > > > > > > > > Ivan Zlenko has started working on standardizing license > header > > > and > > > > > > > > the order of imports. > > > > > > > > > > > > > > > > The first PR [1] adds the sample header [2], as well as > > > checkstyle > > > > > > > > rules for these two items. Rules will be initially disabled > in > > > all > > > > > > > > submodules. The plan is to update submodules gradually, one > > at a > > > > > > > > time, fixing existing files and enabling the rules. > > > > > > > > > > > > > > > > For new files please start using the standard header [2] and > > > import > > > > > > > > order (shown in the PR description), even if the rule is > still > > > > > > > > disabled in the specific module. This will help avoid > > accidental > > > > > > > > violations if PRs are merged concurrently. > > > > > > > > > > > > > > > > We will help resolve conflicts in open PRs. Please avoid > > merging > > > > PRs > > > > > > > > with old CI results. > > > > > > > > > > > > > > > > thanks, > > > > > > > > Attila > > > > > > > > > > > > > > > > [1] https://github.com/apache/ozone/pull/7836 > > > > > > > > [2] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://github.com/apache/ozone/blob/966145d5e869263d53c516d36a0c02e058fd24b9/hadoop-hdds/dev-support/checkstyle/license.header > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > To unsubscribe, e-mail: dev-unsubscr...@ozone.apache.org > > > > > > > > For additional commands, e-mail: dev-h...@ozone.apache.org > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >