Jump to page: 1 2
Thread overview
FWIW: results of cppcheck on dmd sources
Jun 19, 2012
Trass3r
Jun 19, 2012
bearophile
Jun 19, 2012
Walter Bright
Jun 19, 2012
Brad Anderson
Jun 19, 2012
Trass3r
Jun 19, 2012
Walter Bright
Jun 19, 2012
Trass3r
Jun 19, 2012
Walter Bright
Jun 19, 2012
Walter Bright
Jun 19, 2012
Trass3r
And for completeness: results of HEAD clang analyzer
Jun 19, 2012
Trass3r
June 19, 2012
http://trass3r.github.com/dmd-cppcheck/

Seems like the tool isn't dead after all so I tried it out with the dmd sources.
Some false positives but also some valid points.

E.g. http://trass3r.github.com/dmd-cppcheck/15.html#line-960 looks particularly interesting.
June 19, 2012
Trass3r:
> http://trass3r.github.com/dmd-cppcheck/

Beside the usual "Unused variable: xxxx", and the nice "Variable 'xxx' is assigned a value that is never used", I see an uncommon class of suggestions, "The scope of the variable 'xxxxx' can be reduced." that is simple but useful.

Bye,
bearophile
June 19, 2012
On 6/19/2012 7:05 AM, Trass3r wrote:
> http://trass3r.github.com/dmd-cppcheck/
>
> Seems like the tool isn't dead after all so I tried it out with the dmd sources.
> Some false positives but also some valid points.
>
> E.g. http://trass3r.github.com/dmd-cppcheck/15.html#line-960 looks particularly
> interesting.

Thanks for posting this. I think these are worth correcting, although in my quick scan I didn't see any actual bugs.
June 19, 2012
On Tuesday, 19 June 2012 at 17:10:03 UTC, Walter Bright wrote:
> On 6/19/2012 7:05 AM, Trass3r wrote:
>> http://trass3r.github.com/dmd-cppcheck/
>>
>> Seems like the tool isn't dead after all so I tried it out with the dmd sources.
>> Some false positives but also some valid points.
>>
>> E.g. http://trass3r.github.com/dmd-cppcheck/15.html#line-960 looks particularly
>> interesting.
>
> Thanks for posting this. I think these are worth correcting, although in my quick scan I didn't see any actual bugs.

CppCheck is actually how I found the two bugs I fixed recently (CtfeStack::maxStackPointer and ComplexExp::toChars).  I spent a couple hours going through the results of CppCheck but only found those two actual problems (plus the third Globals thing that turned out to not be a problem).  That's not to say I thoroughly investigated every item.  There sure are a lot of unused variables in DMD :P.  I didn't feel qualified to submit a pull request removing them as I don't have a very strong understanding of DMD's source code yet.

One non-bug I thought about addressing but didn't end up doing was this:

http://trass3r.github.com/dmd-cppcheck/18.html#line-4259

I looked up the file history and it seems like that's just a result of Don doing some refactoring.

There are surprisingly few notices of memory leaks considering DMD uses a GC.

Regards,
Brad Anderson
June 19, 2012
> There are surprisingly few notices of memory leaks considering DMD uses a GC.

This is news to me. Has the GC been re-enabled?
June 19, 2012
On 6/19/2012 10:54 AM, Trass3r wrote:
>> There are surprisingly few notices of memory leaks considering DMD uses a GC.
>
> This is news to me. Has the GC been re-enabled?

No, it's just that cppcheck doesn't (and cannot) detect global memory leaks - only very localized ones.
June 19, 2012
On 6/19/2012 10:29 AM, Brad Anderson wrote:
> CppCheck is actually how I found the two bugs I fixed recently
> (CtfeStack::maxStackPointer and ComplexExp::toChars). I spent a couple hours
> going through the results of CppCheck but only found those two actual problems
> (plus the third Globals thing that turned out to not be a problem). That's not
> to say I thoroughly investigated every item. There sure are a lot of unused
> variables in DMD :P. I didn't feel qualified to submit a pull request removing
> them as I don't have a very strong understanding of DMD's source code yet.

I think in general fixing cppcheck's complaints makes the code more understandable and maintainable, even if it doesn't actually fix anything.

A lot of the cruft in the code comes from the endless turmoil it undergoes :-)

June 19, 2012
http://trass3r.github.com/dmd-clang/
June 19, 2012
> I think in general fixing cppcheck's complaints makes the code more understandable and maintainable, even if it doesn't actually fix anything.

+1
June 19, 2012
>> This is news to me. Has the GC been re-enabled?
>
> No, it's just that cppcheck doesn't (and cannot) detect global memory leaks - only very localized ones.

btw, what is the stance on adding some manual memory freeing, at least for obvious local leaks?
« First   ‹ Prev
1 2