Some of findings I have:
- Static code analysis might be slow, reformatting code will add
additional time to the build which might not be desired for developer
experience
- Error messages produced after reformatting might mistake first time
contributors who are not familiar with reformatting step done before
compilation
- I recently found a plugin for IJ:
https://github.com/krasa/EclipseCodeFormatter (allows to unify two
dominant IDEs)
- Verification of code style might be automated via pull requests, if
PRs are enforced. Otherwise core developers must take care of their
habits or commit hooks.
Cheers,
Łukasz
On 13.10.2022 15:27, Guillaume Nodet wrote:
Le jeu. 13 oct. 2022 à 12:50, Olivier Lamy <[email protected]> a écrit :
On Thu, 13 Oct 2022 at 17:47, Tamás Cservenák <[email protected]> wrote:
Howdy,
to not get lost in implementation details, it is really unimportant
(spotless, this or that...)
What IS important is that we agree to implement "IDE agnostic source
formatting", that happens during build
(by maven plugin). This means _everyone_ will end up with 100% the same
result.
The only thing that comes to my mind is "sloppy committer" who does not
build but pushes....
not sure to understand. You mean formatting sources will be bind to a
phase and be executed automatically?
Yes, I meant "automatic" in opposition to "on demand". Sorry if that was
not clear.
Wouldn’t it be better to still have a check as today (checkstyle:check
or the used foo-bar-formatter-plugin:check) which checks the sources
at validate phase.
Then in case of failure, the committer can just run
foo-bar-formatted-plugin:format.
So committer can apply some manual changes as well.
this will detect "sloppy" committer as today by simply failing without
adding another plugin running some scm command during the build.
Well, the point is to avoid the multiple round trips between IDE / shell to
fix all validation issues. Also, you mentioned earlier that IDEs always
have some discrepancies in their formatters, and that's exactly the reason
why having a single reference formatter (i.e. that one that is run during
the build) is a good idea imho.
Is there some option to have a profile (activated on CI) that detects
there
are "uncommitted changes" post build?
As that would mean that sourcetree contains sources NOT formatted, and
that
CI build did reformat them...
I'd like such a check for PRs. This would definitely ensure authors have
run the build before committing,
and most importantly, that the files are correctly formatted.
But even without this step mitigation is simple: someone just rebuilds
HEAD
and commits...
Thanks
T
On Thu, Oct 13, 2022 at 8:41 AM Tamás Cservenák <[email protected]>
wrote:
Formatting happens during build, so once merged all we need is to merge
master into PR branches...
T
On Thu, Oct 13, 2022 at 8:40 AM Sylwester Lachiewicz <
[email protected]> wrote:
What about already open PR with some features or bug fixes.
Don't we should review and merge it before reformatting code -
otherwise
we
will have lots of merge conflicts and over time no one will have
energy to
review it?
Sylwester
śr., 12 paź 2022, 18:23 użytkownik Guillaume Nodet <[email protected]
napisał:
I'd like to propose merging the following PRs:
* https://github.com/apache/maven-shared-resources/pull/1
* https://github.com/apache/maven-site/pull/329
* https://github.com/apache/maven/pull/824
* https://github.com/apache/maven-resolver/pull/147
... and more to come
The idea is to use plugins to automatically reformat the source
code and
sort imports to obey the maven coding style.
The first PR adds the necessary resources to maven-shared-resources
: a
new
header file, as there's a requirement to put the header at the very
beginning for the import sorter plugin to work correctly (else it
considers
the license comment to be part of comment headers and screws the
formatting), and the eclipse xml formatter plugin.
The second PR updates the web site to point to that file which
would be
in
git instead of on the maven web site, and also updates the
instruction
for
IDEA since it has been supporting the eclipse xml config for years
now).
The third and fourth PRs are updates on maven and maven-resolver to
apply
those two plugins.
Those plugins have been used on mvnd and maven-build-cache-extension
already, although they are not using a single shared resource that
would be
added by the first PR. Hence mvnd is still using its previous
coding
style.
Another point is that those plugins are fast and only do not process
files
if they have been already processed and untouched since the last
build. So
from a daily development pov, this is transparent and does not
incur any
additional processing time during the build (or not much really).
Cheers,
Guillaume
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]