ASU Electronic Theses and Dissertations
This collection includes most of the ASU Theses and Dissertations from 2011 to present. ASU Theses and Dissertations are available in downloadable PDF format; however, a small percentage of items are under embargo. Information about the dissertations/theses includes degree information, committee members, an abstract, supporting data or media.
In addition to the electronic theses found in the ASU Digital Repository, ASU Theses and Dissertations can be found in the ASU Library Catalog.
Dissertations and Theses granted by Arizona State University are archived and made available through a joint effort of the ASU Graduate College and the ASU Libraries. For more information or questions about this collection contact or visit the Digital Repository ETD Library Guide or contact the ASU Graduate College at gradformat@asu.edu.
Filtering by
- All Subjects: static analysis
- Creators: Doupe, Adam
To be effective, web applications must perform actions quickly while avoiding unexpected interruptions. However, dynamically linked libraries can cause delays and thus downtime, because dynamically linked code must load multiple files, often from disk. As loading is one of the slowest operations a computer performs, seeking from disk can have a negative impact on performance which causes the server to feel less responsive for users. Dynamically linked code can also break when the underlying library is updated. Normally, when trying to update a server, developers will use test servers. However, if the developer accidentally updates a library in a dynamically linked system, it may be incompatible with another portion of the program.
Statically linking code makes it more reliable and faster (to load) than dynamically linking code. The static linking process varies by programming language. Therefore, different static linkers need to be developed for different languages. This thesis describes the creation of a static linker, called FrozenNode, for the popular back-end web application language, Node.js. FrozenNode resolves Node.js applications into a single file that does not rely on dynamic libraries. FrozenNode was built on top of Closure Compiler to accurately process JavaScript. We found that the resolved application was faster and self-contained yielding significant advantages over the dynamically loaded application. Furthermore, both had the same output.
Vulnerabilities in web applications can be found using static analysis tools, however static analysis tools must reason about dynamically linked application. FrozenNode can be used to statically link a Node.js application before being used by a JavaScript static analysis tool.
identifiers across the HTML5-JavaScript-CSS3 stack. The existing literature shows that a
significant percentage of defects observed in real-world codebases belong to this
category. Existing work focuses on semantic static analysis, while this thesis attempts to
tackle the challenges that can be solved using syntactic static analysis. This thesis
proposes a tool for quickly identifying defects at the time of injection due to
dependencies between HTML5, JavaScript, and CSS3, specifically in syntactic errors in
string identifiers. The proposed solution reduces the delta (time) between defect injection
and defect discovery with the use of a dedicated just-in-time syntactic string identifier
resolution tool. The solution focuses on modeling the nature of syntactic dependencies
across the stack, and providing a tool that helps developers discover such dependencies.
This thesis reports on an empirical study of the tool usage by developers in a realistic
scenario, with the focus on defect injection and defect discovery times of defects of this
nature (syntactic errors in string identifiers) with and without the use of the proposed
tool. Further, the tool was validated against a set of real-world codebases to analyze the
significance of these defects.