Static Code Analysis: From Rules to Intelligence