Analyzes source code based on user-specified rules written in a custom DSL