SemanticDB is a data schema for semantic information about code. It can model many Scala language features that are relevant for developer tools, such as resolved names and type signatures. SemanticDB can be persisted and consumed in the form of protobuf messages, SQL or JSON depending on your application’s needs.
The benefits of this data-driven approach include improved testability, interoperability, composability and performance. In this talk, you will learn about the applications and limitations of SemanticDB. I will share my experiences using SemanticDB to build a wide range of experimental tools including linters, refactoring tools, language servers, online code browsers and documentation generators. Expect many demos. This talk is suitable for a wide audience. Scala newcomers will take a sneak peek into new exciting tooling. Tool tinkerers will learn new ways to develop tools for Scala.