Tools for static analysis
As software engineers, when getting started working on a new project we often need to dig into tens of thousands, even millions of lines of code instead of simply visualizing them. Later, we try to enforce a standard coding style across the entire organization or prevent common pitfalls with code reviews. On a change of the public API of a framework, we go through the whole code base to update all the different places using it.
Fortunately, all these problems could be automated by solving a common subproblem well known from the world of the compilers. In this talk, we'll look at how we can automate manual, mundane tasks related to source code management by using static analysis. We'll look into different phases of processing a program, after that we'll see how we can build linting and source code visualization tools on top of an abstract code representation. In the last part, we'll dig into the code synthesis and AST transformation to discover how we can automatically refactor code and turn it into different forms. In the presentation we'll explore real-life examples from the Angular's tooling ecosystem ✨.
Minko is an engineer in the Angular team at Google. He loves to experiment with abstract theoretical computer science concepts and transform them into robust industrial solutions. Minko's working on compilers, tools for static code analysis, and machine learning. Some of his projects are the book "Switching to Angular", Guess.js, codelyzer, the official Angular style guide, the Go linter revive, and many others.