.Laurent Hubert's.Home.Page
I am a PhD student working under the supervision of Thomas Jensen and David Pichardie at IRISA, in Rennes. My researches are about static analysis of Java bytecode.
I will be graduating by September 2010. If you have a job offer and think I could be interested, feel free to contact me.
.Main.Activities
My work is focused on the verification and analysis of Java bytecode programs. I have worked at the UPM with German Puebla on the decompilation from Java bytecode to PROLOG to be able to use the already developed analyses of PROLOG on those decompiled programs. In Rennes, with Thomas Genet, we have developed a software to compile Java bytecode programs to Term Rewriting Systems (TRS). With David Pichardie, we have worked on a null pointer analysis for Java bytecode, where the challenge is to deal with field initialization, on the initialization of classes, which is lazy in Java, and are now working security-related type system.
.Research.Topic.of.Interest
- Static Analysis and Abstract Interpretation
- Java Bytecode Verification
- Functional Programming
.Tools
- NIT: Nullability Inference Tool
Nit infers nullness properties of variables and can prove that a program is NullPointer-Exception free. It allows finding suitable nullability annotations for fields, method parameters, return values and local variables. - JavaLib & Sawja
JavaLib is a library to parse Java .class files (compiled classes) into OCaml data structures, thus enabling the OCaml programmer to extract information from class files, to manipulate and to generate valid class files. Sawja is a layer on top of JavaLib which allows to deal with complete programs.
.Publications
| [1] |
Laurent Hubert and David Pichardie.
Soundly handling static fields: Issues, semantics and analysis.
Electronic Notes in Theoretical Computer Science, 253(5):15 -
30, 2009.
Proceedings of ByteCode'09. [ bib | slides | http | .pdf ] Although in most cases class initialization works as expected, some static fields may be read before being initialized, despite being initialized in their corresponding class initializer. We propose an analysis that can be applied to identify the static fields that may be read before being initialized and show how this can improve the precision of a null-pointer analysis. Keywords: Java, semantics, class initialization, static analysis, control flow, verification |
| [2] |
Laurent Hubert.
A Non-Null annotation inferencer for Java bytecode.
In Proceedings of the Workshop on Program Analysis for Software
Tools and Engineering (PASTE'08), pages 36-42. ACM, November 2008. [ bib | slides | http | .pdf ] We present a non-null annotations inferencer for the Java bytecode language. This paper proposes extensions to our former analysis in order to deal with the Java bytecode language. We have implemented both analyses and compared their behaviour on several benchmarks. The results show a substantial improvement in the precision and, despite being a whole-program analysis, production applications can be analyzed within minutes. Keywords: Java, NonNull, annotation, inference, static analysis |
| [3] |
Laurent Hubert, Thomas Jensen, and David Pichardie.
Semantic foundations and inference of non-null annotations.
In Proceedings of the international conference on Formal Methods
for Open Object-Based Distributed Systems (FMOODS '08), volume 5051 of
LNCS, pages 132-149. Springer Berlin, June 2008. [ bib | slides | http | .pdf ] This paper proposes a semantics-based automatic null pointer analysis for inferring non-null annotations of fields in object-oriented programs. We prove the analysis correct with respect to a semantics of a minimalistic OO language and complete with respect to the non-null type system proposed by Fähndrich and Leino, in the sense that for every typable program the analysis is able to prove the absence of null dereferences without any hand-written annotations. Experiments with a prototype implementation of the analysis show that the inference is feasible for large programs. Keywords: Java, NonNull, annotation, inference, static analysis |
| [4] |
Laurent Hubert, Thomas Jensen, and David Pichardie.
Semantic foundations and inference of non-null annotations.
Research Report 6482, INRIA, March 2008. [ bib | http ] |
| [5] |
Elvira Albert, Miguel Gómez-Zamalloa, Laurent Hubert, and Germán
Puebla.
Verification of Java bytecode using analysis and transformation of
logic programs.
In Practical Aspects of Declarative Languages, LNCS, pages
124-139. Springer, 2007. [ bib | http | .pdf ] |
| [6] |
Elvira Albert, Miguel Gómez-Zamalloa, Laurent Hubert, and Germán
Puebla.
Towards verification of java bytecode using logic programming tools.
In Proceedings of the International Workshop on Software
Verification and Validation, Seattle, August 2006. Computing Research
Repository (CoRR).
Co-located with FLoC'06. [ bib | .pdf ] |
| [7] |
Laurent Hubert.
Java bytecode verification using analysis and transformation of logic
programs.
Master's thesis, INSA de Rennes, June 2006. [ bib | .pdf ] |
| [8] |
Laurent Hubert.
Memory and time consumption of java bytecode programs.
Technical report, INSA de Rennes, February 2006. [ bib | .pdf ] |
.Contact
laurent@trebuh.net
