office-gobmx/compilerplugins
Stephan Bergmann a6d6d1c24b CLANGPLUGIN_CPPFLAGS did not actually work
...it just appeared to work on machines that happen to have /usr/bin/clang.  So
hoist CLANGDIR/CLANGBUILD from compilerplugins/Makefile-clang.mk to configure.ac
instead.

Change-Id: Ie5d9c6bb8e9d0caa1583d78c8693f06b69873095
2012-12-07 16:09:26 +01:00
..
clang Adapt to current Clang trunk 2012-12-05 17:33:47 +01:00
.gitignore
Makefile
Makefile-clang.mk CLANGPLUGIN_CPPFLAGS did not actually work 2012-12-07 16:09:26 +01:00
Makefile.mk
README

Compiler plugins.


== Overview ==

This directory contains code for compiler plugins. These are used to perform
additional actions during compilation (such as additional warnings) and
also to perform mass code refactoring.

Currently only the Clang compiler is supported (http://clang.llvm.org).


== Usage ==

Compiler plugins are enabled automatically by --enable-dbgutil if Clang headers
are found or explicitly using --enable-compiler-plugins.


== Functionality ==

There are two kinds of modules:
- compile checks - these are run during normal compilation
- rewriters - these must be run manually and modify source files


=== Compile checks ===

Used during normal compilation to perform additional checks.
All warnings and errors are marked '[loplugin]' in the message.


==== Unused variable check ====

- unused parameter 'foo' [loplugin]
- unused variable 'foo' [loplugin]

Additional check for unused variables.


==== Body of if/while/for not in {} ====

- statement aligned as second statement in if/while/for body but not in a statement block [loplugin]

Warn about the following construct:

    if( a != 0 )
        b = 2;
        c = 3;
        
Here either both statements should be inside {} or the second statement in indented wrong.


==== Sal log areas ====

- unknown log area 'foo' (check or extend sal/inc/sal/log-areas.dox) [loplugin]

Check area used in SAL_INFO/SAL_WARN macros against the list in sal/inc/sal/log-areas.dox and
report if the area is not listed there. The fix is either use a proper area or add it to the list
if appropriate.


=== Rewriters ===

Rewriters analyse and possibly modify given source files.
Usage: make COMPILER_PLUGIN_TOOL=<rewriter_name>
Modifications will be written to files <source_file>.new .

== Code documentation / howtos ==

TBD