Skip to content

Commit c6c24e1

Browse files
smierxMichel Dudas
andauthored
BA Thesis Michel Dudas (#35)
Co-authored-by: Michel Dudas <mdudas@AirvonMichel2.fritz.box>
1 parent abeaf88 commit c6c24e1

File tree

4 files changed

+947
-0
lines changed

4 files changed

+947
-0
lines changed

docs/usage_fuzzer.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Fuzzers
2+
## Verwendung
3+
Der Fuzzer kann mit den folgenden Befehlen gesteuert werden:
4+
Dieser Befehl löscht den Ordner aus ggf. vorherigen Durchläufen und erstellt einen Neuen.
5+
```bash
6+
rm -rf build/compilerOutput/Fuzzing && mkdir build/compilerOutput/Fuzzing
7+
```
8+
Dieser Befehl kompiliert den Fuzzer inkl. Generator neu, was nach jeder Änderung getan werden muss.
9+
```bash
10+
mvn test-compile
11+
```
12+
Der Befehl startet den Fuzzer. Die Kommandozeilenparameter können angepasst werden. compile ist Optional und entscheidet ob die generierten Projekte kompiliert werden.
13+
```bash
14+
mvn jqf:fuzz -Dclass=CBuilder.CompilerFuzzTest -Dmethod=testWithGenerator -Dcompile -Dtime=5m -e
15+
```
16+
Der Befehlt reproduziert einen Fehler. Im input-target-Parameter muss die ID angepasst werden.
17+
```bash
18+
mvn jqf:repro -Dclass=CBuilder.CompilerFuzzTest -Dmethod=testwithGenerator -Dinput-target=target/fuzz-results/CBuilder/CompilerFuzzTest/testwithGenerator/failures/id_X
19+
```
20+
21+
## Erweiterung
22+
23+
Falls der Fuzzer erweitert werden soll, kann das je nach Erweiterung an drei Stellen passieren.
24+
25+
Soll ein neuer Generator verwendet werden, muss dieser in CompilerFuzzTest.java angegeben werden, damit er von JQF erkannt wird.
26+
27+
Sollen dem bestehenden Generator neue Funktionen die nicht Rekursion verwenden hinzugefügt werden, muss das im CBuildGenerator.java passieren. In der dortigen generateStatement-Funktion existiert ein if-Statement. Im if-Statement werden die Funktion, in der selben Art wie die bisherigen hinzugefügt.
28+
29+
Sollen dem bestehenden Generator neue Funktionen mit Rekursion hinzugefügt werden. Dabei müssen diese im else-Statement, der generateStatement-Funktion, hinzugefügt werden. Dies sollte in der selben Art stattfinden wie bei den Funktionen ohne Rekursion. Bei der Implementierung der Rekursions-Funktionen muss berücksichtigt werden, dass der expressiondepth-Parameter inkrementiert wird.

pom.xml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.fuzzing</groupId>
7+
<artifactId>Fuzzing</artifactId>
8+
<version>1.0.0</version>
9+
<properties>
10+
<maven.compiler.source>15</maven.compiler.source>
11+
<maven.compiler.target>15</maven.compiler.target>
12+
</properties>
13+
<dependencies>
14+
<!-- JUnit BOM (Bill of Materials) für JUnit 5 -->
15+
<dependency>
16+
<groupId>org.junit</groupId>
17+
<artifactId>junit-bom</artifactId>
18+
<version>5.11.0</version>
19+
<scope>import</scope>
20+
<type>pom</type>
21+
</dependency>
22+
23+
<!-- JUnit Jupiter API für Tests -->
24+
<dependency>
25+
<groupId>org.junit.jupiter</groupId>
26+
<artifactId>junit-jupiter</artifactId>
27+
<version>5.11.0</version>
28+
<scope>test</scope>
29+
</dependency>
30+
31+
<!-- JUnit Platform Launcher für das Ausführen von Tests -->
32+
<dependency>
33+
<groupId>org.junit.platform</groupId>
34+
<artifactId>junit-platform-launcher</artifactId>
35+
<version>1.11.0</version>
36+
<scope>test</scope>
37+
</dependency>
38+
<dependency>
39+
<groupId>edu.berkeley.cs.jqf</groupId>
40+
<artifactId>jqf-maven-plugin</artifactId>
41+
<version>2.0</version>
42+
</dependency>
43+
</dependencies>
44+
45+
<build>
46+
<resources>
47+
<resource>
48+
<directory>c-runtime</directory>
49+
<targetPath>c-runtime</targetPath>
50+
<includes>
51+
<include>**/*</include>
52+
</includes>
53+
</resource>
54+
</resources>
55+
<plugins>
56+
<plugin>
57+
<groupId>edu.berkeley.cs.jqf</groupId>
58+
<artifactId>jqf-maven-plugin</artifactId>
59+
<version>1.8</version>
60+
</plugin>
61+
<!-- Maven Compiler Plugin zum Festlegen der Java-Version -->
62+
<plugin>
63+
<groupId>org.apache.maven.plugins</groupId>
64+
<artifactId>maven-compiler-plugin</artifactId>
65+
<version>3.8.1</version>
66+
<configuration>
67+
<source>${maven.compiler.source}</source>
68+
<target>${maven.compiler.target}</target>
69+
</configuration>
70+
</plugin>
71+
72+
<!-- Beispiel: Maven Surefire Plugin für das Ausführen von Tests -->
73+
<plugin>
74+
<groupId>org.apache.maven.plugins</groupId>
75+
<artifactId>maven-surefire-plugin</artifactId>
76+
<version>2.22.2</version>
77+
</plugin>
78+
</plugins>
79+
</build>
80+
81+
</project>

0 commit comments

Comments
 (0)