The earlier we can catch potential security vulnerabilities, the better. Throughout my career, Iβve tried a few code scanning tools, and at the current time, my favorite is CodeQL by GitHub. In this brief blog post, I will share some of my experiences using CodeQLβββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ
So first and foremost, what is code scanning? Code scanning is the analysis of source code to discover security vulnerabilities as well as other bugs. CodeQL in particular, is tightly integrated with GitHub and can scan your source code as a part of your CI/CD pipeline, and you can browse the results on GitHub.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ
You can also run CodeQL using the CodeQL-CLI or as a VSCode plugin, but from my experience, using the CLI is quite tedious and slow. The easiest way to add code scanning is to enable it from GitHub in the repository you want to scan.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ
Unfortunately, the CodeQL terms of service only permit code scanning on open-source projects unless your company pays for GitHub Advanced Security. However, nothing stops you from manually scanning arbitrary source code using the CLI, but this is strictly against the terms of service.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββββββο»Ώβββο»Ώβββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββββββο»Ώβββο»Ώβββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ
To demonstrate, Iβve forked OWASP Juice Shop, which is already configured with a CodeQl workflow. We can see that CodeQL found 188 different issues in the source code, which isnβt surprising given that OWASP Juice Shop is intentionally built to be as vulnerable as possible.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ
We can then examine one of the vulnerabilities to get detailed feedback on why this snippet of code is vulnerable and suggestions on how to mitigate it.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβββββο»Ώβο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβββββο»Ώβο»Ώβο»Ώβββο»Ώβββββββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββββββο»Ώβο»Ώβββββο»Ώβββββββββββο»Ώβββο»Ώο»Ώββββββο»Ώο»Ώβ