Greg,  I'll finish the nxstyle & check script these days firstly and then
take time to handle the two issues you mentioned if allowed. I wish I could
be competent to take over full responsibility for nxstyle.c.

Gregory Nutt <spudan...@gmail.com> 于2019年12月30日周一 下午11:31写道:

> [moved from priv...@nuttx.apache.org]
>
> Hi, Xiao Xiang and Haitao Liu
>
> > Haitao is preparing a script for style check, the feature include:
> > 1.Auto build nxstyle
> > 2.Improve nxstyle to check the partial file for supporting patch like
> file
> > 3.Input can be the source files, patch file or commit id
>
> I mentioned that I had two things I planned to do for nxstyle.c too.
> Perhaps Haitao would like to take on these changes too?
>
> 1. Derive maximum line width from block comments.  Ref:
>
> https://cwiki.apache.org/confluence/display/NUTTX/Coding+Standard#fileorganization
>
>   * The Maximum line width should be the same as the width of the file
>     section block comment, by default the last asterisk '*' lies on
>     column 78, but wider lines are okay too, as long as things are
>     scaled corrected.  Instead of the line width being a hardcoded 78 or
>     specified the command line, nxstyle would parse the entire file,
>     look at the block comments, find the column of the last '*'  The
>     line width is that colument + 1;
>   * Then also verify that every block comment in the file is the same width
>   * Perhaps the -m argument could change to a amount that you will
>     tolerate extending into the right margin.  So the block comment with
>     is 78, then -m 8 would allow lines to extend to 86.  That is better
>     than a hard-coded 86 because the line width will vary with file
>     content.  For some register definition files, the line width may be
>     120 or so.  In that case -m 8 would allow the line to extend to 128.
>
> 2. Verify that file section block comments are present.
>
>   * Add an enumeration value that indicates every block comment type.
>     See
>
> https://cwiki.apache.org/confluence/display/NUTTX/Coding+Standard#cfilestructure
>     and
>
> https://cwiki.apache.org/confluence/display/NUTTX/Coding+Standard#hfilestructure
>   * Currently logic detects only the presence of "* Private Functions"
>     and "* Private Functions".  Add logic to detect all other the block
>     comment types as well.
>   * Add a global variable to indicate which code block we are currently
>     in.  Each time a file section block comment is found, set the global
>     variable.
>   * The if '#   define" is encountered outside of the "* Pre-processor
>     Definitions" file section, emit an error
>   * If '#  include" is encountered outside of the "* Included Files"
>     section, emit an error.
>   * This logic could eventually be extended to assure that all static
>     functions are defined in the "* Private Functions" section, all
>     global functions are defined in the "* Public Functions section",
>     all static data definitions appear in the "* Private Data" section,
>     and all global data definitions appear in the "* Public data
>     definitions."
>   * We could also enable special parsing depending on the section.  That
>     is already done for the Public/Private Functions.  But we could, for
>     example also verify that variables defined at global scope start
>     with "g-"
>
> Let me know.  I was planning to do these things, but if Haitao Liu is
> interested, he can take over full responsibility for nxstyle.c.
>
> Greg
>
>
>
>
>

Reply via email to