The best pretty printer for NuttX that I am aware of is still tools/indent.sh.  It consistently screws up a few things (as listed in tools/README.txt).  But the screw-ups are relatively easy and probably could be postprocesses.  The astyle and uncrustify stuff in tools/ is pretty must useles.

But none of the tools handle subtle things, like aligned of assignments on = operators like:

      dog      = bat;       /* Assign dog */
      pony     = lizard;    /* Assign pony */
      aardvark = pangolin;  /* Assign aardvark */

and none handle this awful case:

   #ifdef HAVE_SOMETHINGELSE
      if (something == somethingelse)
        {
           do(somethingelse);
        }
      else
   #endif
      if (something == nothing)
        {
          do(nothing);
        }

It is not clear what the indentation should be for the if outside of the #ifdef.. #endif.  Most code aligns that if as though the previous conditional logic did not exist.

Another issue is the unconditional compound statement which breaks all of indentation rules (but this is an nxstyle problem).

  {
    int i
   for (i = 0; i < n; i++)
      {
        handle(i);
      }
  }

The outer {} is indented only by two which makes the indentation of all of the inner stuff appear wrong to nxstyle.


Reply via email to