6

Not sure if the title explains it correctly.

Anyways, I'm building a .NET WPF application which should go through the JavaScript and identify issues such as

  1. If the variables defined are being nullified at the end
  2. If try/catch/finally blocks are being used.
  3. Function calls

I went through the questions over here which were all revolving around c/c++. Now I regret bunking my compilers classes.

I wanted to know how to verify points 1-3 in C#. Any library out there which does this?

Dev
  • 987
  • 2
  • 14
  • 32
  • Is there a question inside your posting? – Uwe Keim Jan 16 '13 at 10:14
  • 1
    Edited the question. Eg. I want to check in C#, if a variable defined in a JS function is being nullified or not. – Dev Jan 16 '13 at 10:20
  • 2
    I would suggest that you take a look at [V8](https://code.google.com/p/v8/), the JavaScript engine of Google. [There is a similar SO question (and answer) on how to use V8 from within C#/.NET](http://stackoverflow.com/questions/356948/referencing-googles-v8-engine-from-a-net-app). With this engine, you could compile your script and let it run, possibly seeing compiler warnings/errors. – Uwe Keim Jan 16 '13 at 10:35
  • BTW: Why do you consider "function calls" as being issues? I think function calls are a pretty good thing, actually! – Uwe Keim Jan 16 '13 at 10:38
  • Thanks for the link. I don't think it'll throw any warnings for the issues 1 and 2. And, by 3 I meant to write External Library Function calls. – Dev Jan 16 '13 at 10:53

2 Answers2

5

What you're looking for is an abstract syntax tree parser for Javascript written in C#.

There are a few choices I know of:

Microsoft's Ajax Minifier library comes with its own AST parser (used to minify / optimize Javascript files). You can find the source code for that on GitHub.

Esprima.net is another option. It's a port of the popular Javascript library Esprima.

The good thing about Esprima is it outputs the AST in a common format (defined by Mozilla here) that's used across a few parsers, making it really easy to port utilities for walking the tree, etc. since they all use the same underlying data structure.

Ryan
  • 7,835
  • 2
  • 29
  • 36
Cuong Vo
  • 4,592
  • 4
  • 22
  • 12
3

Check out IronJS I know they have a pretty good JavaScript library for .Net

IronJS

LiquaFoo
  • 1,723
  • 2
  • 11
  • 17