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.