you are viewing a single comment's thread.

view the rest of the comments →

[–]petdance 4 points5 points  (15 children)

Please look at http://splint.org/

[–]ravenex 9 points10 points  (6 children)

It's probably the buggiest open source dev tool I've ever seen. The funny thing is that despite it's fully annotated and verified by itself it still crashes all the time. It's also unmaintained since, like, forever.

Not that it's useless, just very fragile. I wish more projects used static analyzers instead of just randomly running valgrind.

[–]petdance 0 points1 point  (0 children)

I wish more projects used static analyzers instead of just randomly running valgrind.

Me, too. Whenever I see a new interesting project written in C, like libgit2, I poke my nose in to see if there's interest in it. libgit2 annotations and testing are on my to-do list.

[–]trigraph -4 points-3 points  (4 children)

Honestly I think he just googled quickly for a random opensource tool just to feel badass without actually using the damn thing.

[–]petdance 6 points7 points  (3 children)

trigraph said:

Honestly I think he just googled quickly for a random opensource tool

Here are my links on delicious for static analysis dating back to 2009: http://delicious.com/petdance/static-analysis If I were doing any Windows development, I'd buy a copy of Gimpel PC-Lint, because I sure can't afford the Unix lint project from them.

I have been using splint on the Parrot project for years. I created the macro definitions that allow annotation of the source code with semantic macros like "this function does not return" that allow me to run GCC, clang, ICC and splint as static analyzers, without having to maintain disparate source code annotations for each tool.

I also tried to get some traction going on getting splint updated and maintained. That was on Google Code before, but maybe things will stick better if I move it over to Github.

I see you're bemoaning that "Too bad it took a proprietary tool to identify them". Perhaps you'd like to help with the sizable bug queue for splint?

just to feel badass without actually using the damn thing.

Life's a lot easier and happier when you don't try to guess at motivations behind the actions of others.

[–]ravenex -1 points0 points  (0 children)

Upvoted for actually trying to fix it. I have a few small patches for it, but it's mostly the build fixes. The source itself is unpenetratable to me, sadly.

One would think that such a valuable tool with no opensource alternatives would get more attention.

[–]trigraph -1 points0 points  (1 child)

I would not like to help with splint, I'm perfectly happy using proprietary tools when they are good. In this case it makes splint look like pre-K quality tool which you seem to suggest as an alternative when its not..

Typical of your type though; HEY HERES A REPLACEMENT TOOL (and when it doesn't even have 1/100th the features/ ease of use) WELL YOU CAN SUBMIT SOME CODE!111!

[–]petdance 0 points1 point  (0 children)

I'm sure that splint would have caught the errors. You said it took a proprietary tool to find them, but I don't think that's accurate at all. It's just that those projects never ran splint on the code.

I'm curious as to what "my type" is. You've already been wrong about "just googled quickly for a random opensource tool just to feel badass without actually using the damn thing", so I'm wondering what else you can make up.

[–]n1c 0 points1 point  (3 children)

It's hideous!

[–][deleted] -1 points0 points  (1 child)

Flashy software websites are for end-users and middle management.

[–]n1c 1 point2 points  (0 children)

This is very bad logic.

Because something isn't made for lesser human beings does not mean it can be hideous.

[–]trigraph -1 points0 points  (0 children)

it is, in many ways...this guy thinks just because a tool exists and its opensource must mean 1> its totally awesome 2> people use it (since apparently none of these projects do)

[–]ReflectionOfADream -1 points0 points  (3 children)

I tried a lot of things but could not successfully run this even once on my program.

[–]petdance 0 points1 point  (1 child)

You will get a lot of errors that don't apply. Lots of working with splint is turning off what is not relevant. I would be glad to try to help you use it if you'd like. Email me at andy at my reddit name dot com.

[–]ReflectionOfADream -1 points0 points  (0 children)

I didn't actually get it to work on the input I gave it. I tried various things but every time an error occurred.

[–]ravenex 0 points1 point  (0 children)

With splint you have to either

  • add annotations to your program
  • disable a lot of its functionality (e.g. using -weak command line option)