Been writing a style enforcer using clang tooling recently. It's in a state that is shareable.
It allows you to enforce some basic rules about coupling:
1) No collaboration over globals.
2) No direct coupling to banned namespaces from outside.
3) No concrete classes in namespaces designated for interfaces.
The overall goal is to be able to sweep out coupling in favor of polymorhism and hold it by using the -Werror flag to fail a build if these rules are subsequently violated.https://github.com/prozacchiwawa/clang-tooling-style