C++ has a lot of dark corners. Unfortunately, sometimes we need to allow inexperienced developers to write some C++ code to meet the deadline. The intersection of the two cases often makes things worse: programmers used to delegate memory management to garbage collection tend to throw off new
everywhere in the source, and those stuck with compile error will use every evil hack to get around with it. Code review is a feasible way to ensure code quality in this case, but a better choice is to restrict them into a relatively safe subset of the language.
In this article, I will show how to use clang-query
and a simple script to restrict some unsafe behaviors in unsafe
block/namespace using simple commands:
#include "common.hpp"
struct X {
int f: 2; // error: use of bit field without enclosing Unsafe
};