14
edits
No edit summary |
Mchanlatte (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
Existing work: | = Requirements for DxR = | ||
* Must work with lastest version of ecmascript (6 as of this writing) | |||
* Produce all symbols and locations | |||
* Produce a call graph | |||
== Bonus Features == | |||
* Type Inference | |||
= Existing work: = | |||
See: <https://wiki.mozilla.org/Security/B2G/JavaScript_code_analysis> | |||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | |||
<tr> | |||
<th scope="col" class="left">Framework</th> | |||
<th scope="col" class="left">ES6+</th> | |||
<th scope="col" class="left">Interface</th> | |||
<th scope="col" class="left">Function References (Call Graph or Something)</th> | |||
<th scope="col" class="left">Type Inference</th> | |||
<th scope="col" class="left">Other Notes</th> | |||
</tr> | |||
<tr> | |||
<td class="left">JSWebTools</td> | |||
<td class="left">No</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Esprima</td> | |||
<td class="left">Partial</td> | |||
<td class="left">JS</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Ternjs</td> | |||
<td class="left">No</td> | |||
<td class="left">JS or http+json</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Doctorjs</td> | |||
<td class="left">No</td> | |||
<td class="left">JS</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Safe</td> | |||
<td class="left">No</td> | |||
<td class="left">Java</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">JSAI</td> | |||
<td class="left"> </td> | |||
<td class="left">Coffee Script (from paper)</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
<td class="left">couldn't find code</td> | |||
</tr> | |||
== Algorithms and Techniques == | |||
=== k-CFA === | |||
=== Anderson's Points-To Analysis === | |||
=== Use Analysis === | |||
=== CFA2 === | |||
=== Inlining Eval === | |||
=== Removing the with Statement === | |||
= Ways to get the AST = | |||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | |||
<tr> | |||
<th scope="col" class="left">Name</th> | |||
<th scope="col" class="left">Interface</th> | |||
<th scope="col" class="left">Compatible with Mozilla Parser API</th> | |||
<th scope="col" class="left">Other Pros</th> | |||
<th scope="col" class="left">Other Cons</th> | |||
</tr> | |||
<tr> | |||
<td class="left">Spidermonkey Reflect.parse</td> | |||
<td class="left">JS</td> | |||
<td class="left">Yes (by construction)</td> | |||
<td class="left">Full ES6 support</td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Acorn.js</td> | |||
<td class="left">JS</td> | |||
<td class="left">yes</td> | |||
<td class="left"> </td> | |||
<td class="left"> </td> | |||
</tr> | |||
<tr> | |||
<td class="left">Sweet.js</td> | |||
<td class="left">JS</td> | |||
<td class="left">yes</td> | |||
<td class="left">support for macros</td> | |||
<td class="left">might be hard for the analysis</td> | |||
</tr> | |||
<tr> | |||
<td class="left">Esprima</td> | |||
<td class="left">JS</td> | |||
<td class="left">yes</td> | |||
<td class="left">Partial ES6 support</td> | |||
<td class="left"> </td> | |||
</tr> | |||
edits