views:

142

answers:

4

PPI and Perl::Critic allow programmers to detect certain things in the syntax of their Perl programs.

Is there anything like it that will tokenize/parse C and give you a chance to write a script to do something with that information?

+9  A: 

If I remember correctly, that's what lint does.

ennuikiller
Lint looks at more than just syntax, it also looks for fishy constructs like using a variable before setting them.
Ben S
So does Perl::Critic.
tsee
+9  A: 

There is an open source program called Splint:

Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

Sinan Ünür
+13  A: 

C related programs:

  • BLAST (Berkeley Lazy Abstraction Software verification Tool) — a software model checker for C programs based on lazy abstraction.
  • Clang — A compiler that includes a static analyzer.

  • Frama-C — A static analysis framework for C.

  • Sparse — A tool designed to find faults in the Linux kernel.

  • Splint — An open source evolved version of Lint (C language).

List of tools for Static Code Analysis for C (more than the list above)

0A0D
+3  A: 

It's a little off topic, but on the subject of valuable code analyzers for C is valgrind to catch dodgy memory management.

Schwern