Abstract
The JavaScript revolution is underway. Originally designed as a scripting language for web browsers, this language has now established itself as a universal programming language, despite fairly unorthodox specifications. JavaScript is both a functional language on a model fairly close to Scheme, but also a classless object language based on prototypes. This thesis continues the work done by Rabah Laouadi in his thesis on the development of multi-variant flow analysis algorithms for security purposes, by applying it to JavaScript. While the target of previous work was Java, a class-typed language with static typing, the application to JavaScript required reverse engineering to abstract the models designed for Java and extend them to JavaScript by reusing the essentials of what had been done. The key points of the work were: the meta-modeling of the language, the modeling of closings through the version system of multi-variant analysis and the processing of access to the calculated fields of objects without classes. This approach made it possible to develop a static analyzer capable of ensuring a common flow analysis for two different paradigms. In addition, the analysis makes it possible to analyze the data flow of two communicating programs written in different languages. Experiments show that the analysis obtained has the same finesse and efficiency as that of Java as long as JavaScript is used in a reasonable way. Furthermore, a comparison with software based on abstract interpretations on toy programs made it possible to highlight the strong and weak points of the approach to analysis produced by our analyzer.