« NStatic Presentation | Main | Continuation Passing Style Anonymous Methods »

February 07, 2007


TrackBack URL for this entry:

Listed below are links to weblogs that reference NStatic Presentation, II:

» Can a .NET code analysis tool approach human intelligence? from DotNetKicks.com
You've been kicked (a good thing) - Trackback from DotNetKicks.com [Read More]

» Wesner Moise presents NStatic from Anatoly Lubarsky
[Read More]




My question is:
Did you consider analyzing multi threaded applications?
I mean statically checking deadlocks / race conditions / missing memory barriers?
Or is it outside the theoretically possible static verification?


"command-line execution"

Wes, that would be a big plus for us. We could integrate that into a continuous integration (CI) server so that after each code commit, NStatic is run via command line by the automatic CI server. Right now we can have a CI server run all our unit tests, run FxCop...it would be nice to have it run NStatic as well. Obviously, for that to be possible, NStatic would need to be command-line operable.

Wes, I suspect that if this presentation part 2 didn't go over well with the audience, it is because it is very technical, getting into AI and deep functional programming concepts. Most devs I know have very little understanding of AI (myself included), and very few know what functional programming is; only have heard of it a little in college.

FWIW, I found the post very interesting despite my limited AI knowledge. It will be interesting to see where this focus on AI and functional techniques lands you and how it will separate your tool from other static analysis tools.

Wesner Moise

I haven't seriously thought about threads; I need to see how other products like FindBugs, TeamSuite deal with threading first. I suspect any bugs found in those products would be possible to implement inside my product.

If any error manifests itself as a recognizable pattern within the code, this would be something easy for me to catch.

However, I dont think I would be able to capture any errors that require "lane" analysis, which I think in used in RaceTrack and Spec#.

Wesner Moise

When I do command-line execution, I want to do it well and get a lot of feedback, but it isn't a priority in the initial release.

Dumping rich information into the command line is problematic. There are issues that I am need to look into.

If I dump an XML file, should I be able to open it again and view the contents in NStatic?

Should I dump graphical snapshots of each error with all the highlighting? Would each bug have it's own folder?


Wes, I'd say go for some XML file. For example, one could open up NStatic through the UI, setup all the settings, then save the project to this file. NStatic could then later open this file through the UI, but we could also send this file to the command line NStatic.

I know of at least 2 other dev tools we use that do something similar. For example, XenoCode obfuscator does this, where their XML files are yourProject.postbuild which you can save and load from the UI, but can also can supply to the command line.

From command line, errors are simply output to standard output as text. I'm not sure how well this works for NStatic, but it's a thought.


Regarding multi-threading, seems to me a first step is to get threaded code correct and bug free before even looking at potential multi-thread bugs. Once in place, perhaps another layer could be added to NStatic to check for potential multi-threading errors.

Wesner Moise

I'll look at the continuous integration features once I release the first version, and take into account your desires...

It's too early for me to consider them, when I have to get the base technology out.

As for multithreading, I also look at that later. It turns out that there is a way to represent concurrency denotationally, but it necessarily introduces complexity and performance issues, such that there would probably have to be a separate mode to turn it on.


where can i get this tool

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.


Post a comment

My name is Wesner Moise. I am a software entrepreneur developing revolutionary AI desktop applications. I worked as a software engineer in Microsoft Excel group for six years during the 1990s. I worked on PivotTables and wrote the most lines of code in Excel 97-- about 10 times the median developer. I have a Harvard BA in applied math/computer science and a UCLA MBA in technology entrepreneurship. I am a member of the Triple Nine Society, a 99.9 percentile high-IQ society.

December 2013

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31