GSoC - Code Formatting and Style Checking for RTEMS score

Chris Johns chrisj at rtems.org
Fri Jul 16 04:28:04 UTC 2021


Hi,

I will bring the discussion to the devel list and I hope the comments are in
line with the purpose of the project. Please correct what I say if it is not.

The pre-commit script that is in github review is a good base and I believe it
solves that problem for those on Linux. It is a great start and it is nice to see.

The work needs to mature and progress and that means a few things. I was
approached by Joel about where this would live in rtems-tools. As the script
stands it is not suitable for rtems-tool because the format is specific to the
score code in rtems.git.

I think a pre-commit script needs to live in the repo it is for in a spot a user
can copy to the hooks directory of their repo. For example `git-hooks`.

A git hooks script for rtems.git needs to run on all the supported hosts or we
may result in patches being left on the floor. If a contributor's host OS is not
supported and the patch is rejected for formatting reasons picked up by the
check the contributor may just walk away.

The script should use `/usr/bin/env python3` and it needs to check for a range
of `clang-format` instances. FreeBSD has a package that installs the format
command as `clang-format10` for LLVM 10 and `clang-format11` for version 11.

A contributor being able to run the script may depend on the host having a
package or packages installed. Given this is for RTEMS development that is fine.
The script needs to handle any set up errors nicely if something is missing. I
prefer we avoid the "experts" approach to error management.

There is possible future work adding a command to rtems-tools. Ida and I
discussed this on discord and we decided a command called `rtems-style` would be
nice. It would be nice if that command checked, ie `--mode=check`, a style as
well as `--mode=reformat` to automatically reformat a source file.

A command for rtems-tools has to support python2 and python3 and it has to
handle errors in suitable manner. Printing uncaught exception is not OK. It
should also be self contained and not depend on any pip python packages.

If an `rtems-style` command is created and installed when rtems-tool is
installed the pre-commit git script could be made to use it and so the style is
held in a single location.

Finally an rtems-style command could be extended to support python
(--lang=python) or other styles for other code formats. This is inline with our
other eco-system interfaces we provide.

I hope this helps.

Chris

On 16/7/21 5:13 am, Ida Delphine wrote:
> I will check on this
> 
> On Thu, Jul 15, 2021 at 3:39 PM Gedare Bloom <gedare at rtems.org
> <mailto:gedare at rtems.org>> wrote:
> 
>     On Thu, Jul 15, 2021 at 5:19 AM Ida Delphine <idadelm at gmail.com
>     <mailto:idadelm at gmail.com>> wrote:
>     >
>     > Hello everyone,
>     > From the discussion on discord it looks like clang-format cannot be
>     installed on MacOS and FreeBSD. Is there any alternative or way to have it
>     on these operating systems?
>     >
>     What are the challenges with them? Can clang-format be built from
>     source on those hosts?
> 
>     > On Wed, 5 May 2021, 10:21 pm Ida Delphine, <idadelm at gmail.com
>     <mailto:idadelm at gmail.com>> wrote:
>     >>
>     >> Hello everyone,
>     >>
>     >> Regarding this project (https://devel.rtems.org/ticket/3860
>     <https://devel.rtems.org/ticket/3860>) I went with clang-format as we all
>     agreed. I have tested it on some "score" files and it made some changes
>     which I don't think are very much in line with the RTEMS coding style.
>     However, it wasn't really clear if we will chage the RTEMS coding style or
>     try to make changes to clang-format to fit the style.
>     >> Please will love to know the best option.
>     >>
>     >> Cheers,
>     >> Ida.
>     >
>     > _______________________________________________
>     > devel mailing list
>     > devel at rtems.org <mailto:devel at rtems.org>
>     > http://lists.rtems.org/mailman/listinfo/devel
>     <http://lists.rtems.org/mailman/listinfo/devel>
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
> 


More information about the devel mailing list