QL language referenceΒΆ
Learn all about QL, the powerful query language that underlies the code scanning tool CodeQL.
About the QL language: QL is the powerful query language that underlies CodeQL, which is used to analyze code.
Predicates: Predicates are used to describe the logical relations that make up a QL program.
Queries: Queries are the output of a QL program. They evaluate to sets of results.
Types: QL is a statically typed language, so each variable must have a declared type.
Modules: Modules provide a way of organizing QL code by grouping together related types, predicates, and other modules.
Signatures: Signatures provide a typing mechanism to parameters of parameterized modules.
Aliases: An alias is an alternative name for an existing QL entity.
Variables: Variables in QL are used in a similar way to variables in algebra or logic. They represent sets of values, and those values are usually restricted by a formula.
Expressions: An expression evaluates to a set of values and has a type.
Formulas: Formulas define logical relations between the free variables used in expressions.
Annotations: An annotation is a string that you can place directly before the declaration of a QL entity or name.
Recursion: QL provides strong support for recursion. A predicate in QL is said to be recursive if it depends, directly or indirectly, on itself.
Lexical syntax: The QL syntax includes different kinds of keywords, identifiers, and comments.
Name resolution: The QL compiler resolves names to program elements.
Evaluation of QL programs: A QL program is evaluated in a number of different steps.
QL language specification: A formal specification for the QL language. It provides a comprehensive reference for terminology, syntax, and other technical details about QL.