Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen: http://dx.doi.org/10.18419/opus-12274
Autor(en): Ragavendran, Koushik
Titel: NullnessGraphSeq: Learning-based Java nullness inference
Erscheinungsdatum: 2022
Dokumentart: Abschlussarbeit (Master)
Seiten: xvii, 51
URI: http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-122914
http://elib.uni-stuttgart.de/handle/11682/12291
http://dx.doi.org/10.18419/opus-12274
Zusammenfassung: Most web-based projects' server-side and android application development use Java programming language. Like most programming languages, Java has a unique \null" value representing a missing value. But, dereferencing of program element pointing \null" value may result in NullPointerException in the run-time. To prevent NullPointerException in run-time null-type annotations were introduced by Java-8. The null-type annotations specify the nullness of a program element as either \can be null" or \never null". Static analyses using these null-type annotations warn developers if the \null" or program element pointing \null" value is sometimes assigned to the \never null" program element. Also, it warns developers if the \can be null" program element is not checked for null before dereferencing. Due to lack of null-type annotations, this thesis presents a learning-based approach for inferring null-type annotation of program elements. We formulate the problem as a Binary Classi cation problem because classifying the program element as \can be null" or \never null" helps IDE suggest null checks only when required. The model predicts nullness for methods, parameters, elds and variables from respective local contexts of identi er, node type, usage, assignment and comment in combination with the global context of data dependency information. The model we train combine Long Short Term Memory, Feed-Forward Network for summarising the local context and Graph Neural Network for passing local context information as messages. We trained our model with 20000 Java les and achieved an accuracy of 0.8174 and F1-scores of 0.8879 and 0.4971 for \can be null" and \never null", respectively. We evaluate our approach by comparing it with the existing tool InferNullity as the baseline by comparing the inference from InferNullity and the approach used in this thesis with the ground truth.
Die meisten webbasierten Projekte auf der Server-Seite und die Entwicklung von Android-Anwendungen verwenden die Programmiersprache Java. Wie die meisten Programmiersprachen verfügt auch Java über einen einzigartigen "Null"-Wert, der einen fehlenden Wert darstellt. Die Dereferenzierung eines Programmelements, das auf den Wert "null" zeigt, kann jedoch zur Laufzeit zu einer NullPointerException führen. Um NullPointerException in der Laufzeit zu verhindern, wurden mit Java-8 null-type Annotationen eingeführt. Die null-type Annotationen spezizieren die Nulligkeit eines Programmelements entweder als "kann null sein" oder "niemals null". Statische Analysen, die diese null-type Annotationen verwenden, warnen Entwickler, wenn der Wert "null" oder das Programmelement, das auf "null" zeigt, manchmal dem Programmelement "never null" zugewiesen wird. Außerdem wird der Entwicklergewarnt, wenn das "can be null"-Programmelement vor der Dereferenzierung nicht auf null geprüft wird. Aufgrund des Mangels an null-type Annotationen wird in dieser Arbeit ein lernbasierter Ansatz zur Ableitung von null-type Annotationen von Programmelementen vorgestellt. Wir formulieren das Problem als ein binäres Klassizierungsproblem, da die Klassizierung des Programmelements als "kann null sein" oder "niemals null" dem IDE hilft, Null-Pr ufungen nur bei Bedarf vorzuschlagen. Das Modell sagt die Nichtigkeit von Methoden, Parametern, Feldern und Variablen aus den jeweiligen lokalen Kontexten von Bezeichner, Knotentyp, Verwendung, Zuweisung und Kommentar in Kombination mit dem globalen Kontext der Datenabhängigkeitsinformationen voraus. Das von uns trainierte Modell kombiniert Long Short Term Memory, Feed-Forward Network für die Zusammenfassung des lokalen Kontexts und Graph Neural Network für die Weitergabe lokaler Kontextinformationen als Nachrichten. Wir trainierten unser Modell mit 20000 Java-Dateien und erreichten eine Genauigkeit von 0,8174 und F1-Werte von 0,8879 bzw. 0,4971 für "kann null sein" und "nie null". Wir bewerten unseren Ansatz, indem wir ihn mit dem bestehenden Tool InferNullity als Basis vergleichen, indem wir die Inferenz von InferNullity und den in dieser Arbeit verwendeten Ansatz mit der Grundwahrheit vergleichen.
Enthalten in den Sammlungen:05 Fakultät Informatik, Elektrotechnik und Informationstechnik

Dateien zu dieser Ressource:
Datei Beschreibung GrößeFormat 
master_thesis_koushik_ragavendran.pdf4,32 MBAdobe PDFÖffnen/Anzeigen


Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.