Skip to content

Commit 8efcabf

Browse files
author
james
committed
docs: rework ql-training.rst
(cherry picked from commit 49955c5)
1 parent b56b28e commit 8efcabf

File tree

1 file changed

+35
-28
lines changed

1 file changed

+35
-28
lines changed
Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,63 @@
11
QL training and variant analysis examples
22
#########################################
33

4-
Introduction to variant analysis with QL
5-
========================================
4+
QL and variant analysis
5+
=======================
66

77
`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.
88

99
`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>`__.
1010

11-
Getting started with QL for variant analysis
12-
============================================
13-
1411
The QL language is easy to learn, and exploring code using QL is the most efficient way to perform variant analysis.
1512

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.
13+
Learning QL for variant analysis
14+
================================
15+
16+
Start learning how to use QL in variant analysis for a specific language by looking at the topics below. Each topic links to a short presentation on the QL language, QL libraries, or an example variant discovered using QL.
1717

1818
.. |arrow-l| unicode:: U+2190
1919

2020
.. |arrow-r| unicode:: U+2192
2121

22+
When you have selected a presentation, use |arrow-r| and |arrow-l| to navigate between slides, press **p** to view the additional notes for a slide (where available), and press **f** to enter full-screen mode.
23+
24+
The presentations contain a number of QL query examples.
25+
We recommend that you download `QL for Eclipse <https://help.semmle.com/ql-for-eclipse/Content/WebHelp/home-page.html>`__ and import the example snapshot for each presentation so that you can find the bugs mentioned in the slides.
26+
27+
2228
.. pull-quote::
2329

2430
Information
2531

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.
32+
The presentations listed below are used in QL language and variant analysis training sessions run by Semmle engineers.
33+
Therefore, be aware that the slides are designed to be presented by an instructor.
34+
If you are using the slides without an instructor, please use the additional notes to help guide you through the examples.
2935

3036
QL and variant analysis for C/C++
31-
=================================
37+
---------------------------------
3238

3339
- `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+
- `Example: Bad overflow guard <../ql-training-rst/cpp/bad-overflow-guard.html>`__–an example of iterative query development to find bad overflow guards in a C++ project.
41+
- `Program representation: QL for C/C++ <../ql-training-rst/cpp/program-representation-cpp.html>`__–information on how QL analysis represents C/C++ programs.
42+
- `Introduction to local data flow <../ql-training-rst/cpp/local-data-flow-cpp.html>`__–an introduction to analyzing local data flow in C/C++ using QL, including an example demonstrating how to develop a query to find a real CVE.
43+
- `Exercise: snprintf overflow <../ql-training-rst/cpp/snprintf.html>`__–an example demonstrating how to develop a data flow query.
44+
- `Introduction to global data flow <../ql-training-rst/cpp/global-data-flow-cpp.html>`__–an introduction to analyzing global data flow in C/C++ using QL.
45+
- `Analyzing control flow: QL for C/C++ <../ql-training-rst/cpp/control-flow-cpp.html>`__–an introduction to analyzing control flow in C/C++ using QL.
4046

4147
QL and variant analysis for Java
42-
================================
48+
--------------------------------
4349

4450
- `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.
4551
- `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.
52+
- `Program representation: QL for Java <../ql-training-rst/java/program-representation-java.html>`__–information on how QL analysis represents Java programs.
53+
- `Introduction to local data flow <../ql-training-rst/java/local-data-flow-java.html>`__–an introduction to analyzing local data flow in Java using QL, including an example demonstrating how to develop a query to find a real CVE.
54+
- `Exercise: Apache Struts <../ql-training-rst/java/apache-struts-java.html>`__–an example demonstrating how to develop a data flow query.
55+
- `Introduction to global data flow <../ql-training-rst/java/global-data-flow-java.html>`__–an introduction to analyzing global data flow in Java using QL.
56+
57+
More resources
58+
--------------
59+
60+
- If you are completely new to QL, look at our introductory topics in :ref:`Getting started <getting-started>`.
61+
- To find more detailed information about how to write QL queries for specific languages, visit the links in :ref:`Writing QL queries <writing-ql-queries>`.
62+
- 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>`__.
63+
- Find more examples of queries written by Semmle's own security researchers in the `Semmle Demos repository <https://github.com/semmle/demos>`__ on GitHub.

0 commit comments

Comments
 (0)