|
How To Use C Programming To Verify Your Javascript
By Mads Kristensen
Expert Author
Article Date: 2009-11-05
In the past few days, I've worked on finding a way to do static code analysis on JavaScript files.The resaon is that I want to apply some sort of binary and source code checking like FxCop and StyleCop provides for C#.
There exist some tools for linting JavaScript like JavaScript Lint, but linting only checks syntax and not implementation. To do that I found the Jscript compiler build into the .NET Framework to be just what I wanted. It compiles JavaScript and reports if it finds any errors.
To test it out, I wrote a simple C# class that takes an array of JavaScript files to compile. I then called the class from a unit test, so I could make the test fail if the compiler finds any errors with the script files. The class contains a single public method called Compile and here is a simplified example on how to use it from any unit testing framework. You can download the class at the bottom of this post.
[Test]
publicvoid JavascriptTest() { string[] javascriptFiles = Directory.GetFiles(@"D:\Website", "*.js", SearchOption.AllDirectories); using (JavaScriptCompiler compiler = newJavaScriptCompiler()) { compiler.Compile(javascriptFiles); Assert.IsFalse(compiler.HasErrors, compiler.ErrorMessage); } }
What's nice is that by doing compile time checking of JavaScripts, I get that extra little security that's so hard to get when developing JavaScript heavy websites. The Microsoft JScript compiler isn't perfect, so I still recommend using a linting tool as well. The two approaches cover different scenarios. I hope to have a very simple implementation on using a linting tool soon.
Download
Remember to add a reference to Microsoft.JScript in your Visual Studio project before using this class.
JavaScriptCompiler.cs (2,48 kb)
Comments
About the Author:
Mads Kristensen currently works as a Senior Developer at Traceworks located
in Copenhagen, Denmark. Mads graduated from Copenhagen Technical Academy with a multimedia degree in
2003, but has been a professional developer since 2000. His main focus is on ASP.NET but is responsible for Winforms, Windows- and
web services in his daily work as well. A true .NET developer with great passion for the simple solution.
http://www.madskristensen.dk/
|