Learning QL ########### `QL `__ is the query language used in Semmle's `variant analysis `__ engine. You can use queries written in QL to explore code and quickly find variants of security vulnerabilities and bugs. The QL language is also part of the technology behind `LGTM `__, Semmle's analysis platform that combines deep semantic code search with data science insights to help developers ship secure code. QL queries are easy to write and share–visit the topics below and `our open source repository on GitHub `__ to learn more. You can also try out QL in the `query console `__ on `LGTM.com `__. Here, you can write QL code to query open source projects directly, without having to download snapshots and libraries. .. _getting-started: Getting started *************** If you are new to QL, start by looking at the following topics: .. toctree:: :maxdepth: 1 introduction-to-ql about-ql beginner/ql-tutorials ql-etudes/river-crossing QL training and variant analysis examples ****************************************** To start learning how to use QL in variant analysis for a specific language, see: .. toctree:: :maxdepth: -1 ql-training .. _writing-ql-queries: Writing QL queries ****************** To learn more about writing your own queries, see: .. toctree:: :maxdepth: 3 :includehidden: writing-queries/writing-queries For more information on writing QL to query code written in a specific language see: .. toctree:: :maxdepth: 2 :includehidden: cpp/ql-for-cpp csharp/ql-for-csharp cobol/ql-for-cobol java/ql-for-java javascript/ql-for-javascript python/ql-for-python Advanced QL and technical information ************************************* For more technical information see: .. toctree:: :maxdepth: 2 :includehidden: advanced/advanced-ql technical-info Reference topics **************** For a more comprehensive guide to QL see the following reference topics: - `QL language handbook `__—a description of important concepts in QL - `QL language specification `__—a formal specification of the QL language. Search ****** .. * :ref:`genindex` remove index for the time being as we currently have no tags * :ref:`search`