an introduction to static code analysis