Skip to content

Commit d1d19bf

Browse files
author
james
committed
docs: add ql-training page to learn-ql project
(cherry picked from commit c8dd5e6)
1 parent e19799f commit d1d19bf

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

docs/language/learn-ql/index.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ For more information on writing QL to query code written in a specific language
4646
javascript/ql-for-javascript
4747
python/ql-for-python
4848

49+
QL training and variant analysis examples
50+
******************************************
51+
52+
To start learning how to use QL in variant analysis for a specific language, see:
53+
54+
.. toctree::
55+
:maxdepth: -1
56+
57+
ql-training
58+
4959
Advanced QL and technical information
5060
*************************************
5161

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
QL training and variant analysis examples
2+
#########################################
3+
4+
Introduction to variant analysis with QL
5+
========================================
6+
7+
`Variant analysis <https://semmle.com/variant-analysis>`__ is the process of using a known vulnerability as a seed to find similar problems in your code. Security engineers typically perform variant analysis to identify possible vulnerabilities and to ensure these threats are properly fixed across multiple code bases.
8+
9+
`QL <https://semmle.com/ql>`__ is Semmle's variant analysis engine, and it is also the technology that underpins LGTM, Semmle's community driven security analysis platform. Together, QL and LGTM provide continuous monitoring and scalable variant analysis for your projects, even if you don’t have your own team of dedicated security engineers. You can read more about using QL and LGTM in variant analysis in the `Semmle blog <https://blog.semmle.com/tags/variant-analysis>`__.
10+
11+
Getting started with QL for variant analysis
12+
============================================
13+
14+
The QL language is easy to learn, and exploring code using QL is the most efficient way to perform variant analysis.
15+
16+
Start learning how to use QL in variant analysis for a specific language by looking at the topics below. Each topic provides links to short presentations on the QL language, QL libraries, and interesting vulnerabilities found using QL.
17+
18+
.. |arrow-l| unicode:: U+2190
19+
20+
.. |arrow-r| unicode:: U+2192
21+
22+
.. pull-quote::
23+
24+
Information
25+
26+
These presentations are used in QL language and variant analysis training sessions run by Semmle engineers. Therefore, be aware the slides are designed to be presented by an instructor.
27+
28+
Use |arrow-l| and |arrow-r| to navigate between slides, press **p** to view additional notes for each slide (where available), and press **f** to enter full-screen mode.
29+
30+
QL and variant analysis for C/C++
31+
=================================
32+
33+
- `Introduction to variant analysis: QL for C/C++ <../ql-training-rst/cpp/intro-ql-cpp.html>`__–an introduction to variant analysis and QL for C/C++ programmers.
34+
- `Example: Bad overflow guard <../ql-training-rst/cpp/bad-overflow-guard.html>`__–
35+
- `Program representation: QL for C/C++ <../ql-training-rst/cpp/program-representation-cpp.html>`__–
36+
- `Introduction to local data flow <../ql-training-rst/cpp/local-data-flow-cpp.html>`__–
37+
- `Exercise: snprintf overflow <../ql-training-rst/cpp/snprintf.html>`__–
38+
- `Introduction to global data flow <../ql-training-rst/cpp/global-data-flow-cpp.html>`__–
39+
- `Analyzing control flow: QL for C/C++ <../ql-training-rst/cpp/control-flow-cpp.html>`__–
40+
41+
QL and variant analysis for Java
42+
================================
43+
44+
- `Introduction to variant analysis: QL for Java <../ql-training-rst/java/intro-ql-java.html>`__–an introduction to variant analysis and QL for Java programmers.
45+
- `Example: Query injection <../ql-training-rst/java/query-injection.html>`__–
46+
- `Program representation: QL for Java <../ql-training-rst/java/program-representation-java.html>`__–
47+
- `Introduction to local data flow <../ql-training-rst/java/local-data-flow-java.html>`__–
48+
- `Exercise: Apache Struts <../ql-training-rst/java/apache-struts-java.html>`__–
49+
- `Introduction to global data flow <../ql-training-rst/java/global-data-flow-java.html>`__–
50+
51+
Other resources
52+
===============
53+
54+
There is also `extensive documentation <https://help.semmle.com/QL/learn-ql>`__ available to help you learn QL. You can use the `interactive query console <https://lgtm.com/query>`__ on LGTM.com or the `QL for Eclipse plugin <https://lgtm.com/help/lgtm/running-queries-ide>`__ to try out your own queries on any of the open source projects that are currently on LGTM.
55+
56+
To read more about how QL queries have been used in Semmle's security research, and to read about new QL developments, visit the `Semmle blog <https://blog.semmle.com>`__. You can find examples of the queries written by Semmle's own security resesarchers in the `Semmle Demos repository <https://github.com/semmle/demos>`__ on GitHub.

0 commit comments

Comments
 (0)