[petsc-dev] I hate this one

Milad Fatenejad milad at uchicago.edu
Wed Feb 13 10:45:05 CST 2013


Thanks Karl!

On Wed, Feb 13, 2013 at 10:38 AM, Karl Rupp <rupp at mcs.anl.gov> wrote:

> 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/<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.
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130213/18644485/attachment.html>


More information about the petsc-dev mailing list