Code Formatter for STYLE(9)?

Baptiste Daroussin bapt at FreeBSD.org
Fri Mar 25 07:47:39 UTC 2016


On Thu, Mar 24, 2016 at 05:15:30PM -0700, Bryan Drewery wrote:
> On 3/24/2016 9:24 AM, Pietro Cerutti wrote:
> > On 2016-03-24 15:54, Matthew Seaman wrote:
> >> On 2016/03/24 13:29, Sebastian Huber wrote:
> >>> Hello,
> >>>
> >>> is there a ready to use C code formatter available that honours
> >>> STYLE(9)? I tried clang-format, but it knows only LLVM, Google,
> >>> Chromium, Mozilla by default. The GNU indent --original seems to produce
> >>> nothing usable. Same problem with astyle --style=bsd.
> >>>
> >>
> >> pkg uses uncrustify with this config file:
> >>
> >> https://github.com/freebsd/pkg/blob/master/freebsd.cfg
> >>
> >> It's approximately what style(9) describes but doesn't cover things like
> >> sorting include files and I don't think it was updated in response to
> >> the recent change allowing { brackets } around certain single-line
> >> statements.
> > 
> > It looks like it does: https://github.com/freebsd/pkg/commit/1bc61a4
> > 
> 
> It's not quite right. It is adding {} to single-line if statements in
> some code.

Yes this is un purpose for pkg
> 
> >  static __inline struct filemon *
> >  filemon_acquire(struct filemon *filemon)
> >  {
> > -
> > -       if (filemon != NULL)
> > +       if (filemon != NULL) {
> >                 refcount_acquire(&filemon->refcnt);
> > +       }
> >         return (filemon);
> >  }
> 
> It's also not aware of our (silly?) blank line with no declarations rule:

I couldn't find how to make that
> 
> >  static __inline void
> >  filemon_drop(struct filemon *filemon)
> >  {
> > -
> >         sx_xunlock(&filemon->lock);
> >         filemon_release(filemon);
> >  }
> 
> And wrapping multiple conditions:
> 
> > -       if (p->p_filemon != NULL && p != curproc)
> > +       if ((p->p_filemon != NULL) && (p != curproc)) {
> >                 return (EBUSY);
> > +       }

Same I couldn't find how to make that better
> 
> It's also not respecting the wrap rule of tabs + 4 spaces.

same
> 
> It's also adding random blank lines before functions and macros.

yup

The above reasons are why it has not been automatically used in pkg.
It is the closer I could get, I would be happy to get patches to improve

Best regards,
Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20160325/0275d67d/attachment.sig>


More information about the freebsd-hackers mailing list