1. A method of detecting vulnerabilities in source code comprising: analyzing variables in the source code and creating models therefrom in which each model specifies pre-determined characteristics about each variable; using the variable models to create models of arguments to routine calls in the source code; and using the argument models in conjunction with pre-specified criteria for the corresponding routine calls to determine whether the routine calls possess vulnerabilities as a consequence of the arguments and known routine behavior.