[petsc-dev] I hate this one

Karl Rupp rupp at mcs.anl.gov
Wed Feb 13 10:38:54 CST 2013


Hi Milad,

the checks are in src/contrib/style/checks/. You can run them from 
PETSC_DIR, but they currently check the full source tree only. Compare with
http://krupp.iue.tuwien.ac.at/petsc-style/
to see whether you've introduced additional 'violations'. You can also 
generate the full HTML output by running src/contrib/style/runhtml.sh 
from PETSC_DIR and view/compare the output in 
src/contrib/style/html/index.html

Best regards,
Karli


On 02/13/2013 10:32 AM, Milad Fatenejad wrote:
> Hello:
>
> I am working on modifying PETSc to interoperate with the MOAB mesh
> library. I'd love to get some of Karl's scripts to ensure that my code
> is compliant with the style guide. Are they available somewhere?
>
> Thank You
> Milad
>
> On Mon, Jan 21, 2013 at 10:19 AM, Sean Farley <sean at mcs.anl.gov
> <mailto:sean at mcs.anl.gov>> wrote:
>
>     On Mon, Jan 21, 2013 at 10:06 AM, Karl Rupp <rupp at mcs.anl.gov
>     <mailto:rupp at mcs.anl.gov>> wrote:
>      > Hi Matt,
>      >
>      >
>      >>     Again, there are limits to everything, and this surpasses
>     the useful
>      >>
>      >>     limit to this kind of specification. This is not personal
>      >>     expression, this
>      >>     is ease of reading.
>      >>
>      >>
>      >> Also, judging by the ENORMOUS number of source code changes,
>     "everyone"
>      >> was not following the informal guidelines.
>      >
>      >
>      > Yes, the changes are 'enormous' if you count the absolute number
>     of lines.
>      > However, my overall impression while refactoring was that I
>     touched ~1% of
>      > the total code base only. It's the huge size of the code base
>     that makes the
>      > number of changes appear to be high.
>      >
>      > Also, an estimated 50% of the violations stem from a copy&paste
>     of older
>      > code or previous examples rather than intentionally ignoring the
>     style
>      > guidelines. Thus, by bringing everything to a consistent state, a
>     (large)
>      > number of such copy&paste-induced violations are no longer going
>     to happen
>      > at all.
>      >
>      > The PETSc coding style guide needs to define exactly one style.
>     Your style
>      > preference obviously differs. My personal preference differs
>     slightly, too.
>      > Maybe Jed and/or others would prefer another slight variation.
>     Nevertheless,
>      > allowing a bit more flexibility in one's own personal coding style by
>      > following one common coding style is to the benefit of the whole
>     project.
>      > Visual consistency is an obvious one, but most importantly it aids in
>      > setting up other scripts for increased uniformity among the
>     different PETSc
>      > modules.
>      >
>      > You may argue that it does not matter whether we have 'for(...)'
>     or 'for
>      > (...)'. While this is certainly right for a compiler, I would
>     like to give
>      > you one example where it *does* make a difference:
>      >  src/mat/interface/matrix.c:
>      >   PetscErrorCode  MatSetValuesAdifor(Mat mat,PetscInt nl,void *v)
>      > So, keeping consistency with the style guide, we would write
>      >   for (...) {...}
>      >   MatSetValuesAdifor(...) {...}
>      > and there is the additional blank contributing to the difference
>     between the
>      > function call and the for-loop. If, however, we have
>      >   for(...) {...}
>      >   MatSetValuesAdifor(...) {...}
>      > any scripts additionally need to check for characters in front of
>     'for'.
>      > Fortunately, it is *currently* sufficient to just consider all
>     characters
>      > other than a blank in front of 'for' to be a function call.
>     However, one day
>      > we might find code such as
>      >   do_something(...);for(...) {...};
>      > or even
>      >   cilk_for(...)
>      > and all of a sudden we are unable to use any simple checker
>     scripts any
>      > more. With a common PETSc style, the additional blank would still
>     allow for
>      > far simpler checks and refactoring if required.
>      >
>      > Just my 2 cents…
>
>     Thanks, Karl. I appreciate your effort on this front.
>
>
>




More information about the petsc-dev mailing list