Open lidavidm opened 1 year ago
+1! Coming from the python world, where black
is almost a standard now, I haven't had to think about formatting in a long time. I simply set my editor/IDE to auto-format on save and it always passes linting.
I think I spent at least 15 minutes the other day manually fixing little things to make checkstyle happy; I would love to only have to think about the code and not formatting.
Another interesting option is https://github.com/jhipster/prettier-java.
I see that pre-commit
is already part of the project and dev process. One potential way forward could be to enable pre-commit to do the java auto-formating only on changed files. The downside of this approach would be that PRs would be harder to look through until all files are re-formatted.
Unfortunately, CI relies on archery (which will recheck every file), not pre-commit, so that's not quite an option
prettier may be nice if we already use prettier elsewhere (I don't think we do), also not sure if it has integration with typical Java IDEs
In any case any of {google-java-format, clang-format, prettier} would probably be better than checkstyle
From a quick glance, I would probably feel most comfortable with google-java-format (all Java, maintained). prettier-java looks to have its own Java parser and I'm not sure how much clang-format's Java support is used (or if it'll keep up with Java syntax changes, not that we can use them for a while yet...)
Thoughts on using filter branch to apply formatting without losing git blame? There are a fair amount of commits, and it'd take a while to get through all of them...
We can't rewrite history.
We can use that feature for ignoring commits for blame.
Ah, completely forgot that filter branch rewrites history :man_facepalming:
Describe the enhancement requested
checkstyle is unfortunately only a linter and cannot auto-format. google-java-format (or possibly some other plugin like clang-format) can be run to check and reformat files. google-java-format additionally integrates with IntelliJ. This makes development smoother.
However, we would have to reformat the entire codebase. Possibly, we can do this module-by-module.
Component(s)
Developer Tools, Java