CSLint: Deadlock Detector for C#


This is a deadlock detector for CSharp programs. It builds a lock graph for the application and searches loops in the graph.

CSLint is currently analyzing only monitors accessed through class fields (i.e lock(x) where x is component of some class) and that value of such fields can never be changed. 

To use it you should include in you PATH environment variable \cslint\bin directory. After it just run "CSLINT assembly-path".

This product is port of my Java verifier Jlint to CSharp. Only most interesting part of this verifier (deadlock detection algorithm) is currently ported. 

CSLint is using ILReader library implemented by Lutz Roeder for accessing the IL bytecode.

Unfortunately I didn't find a way to access debugging information (line numbers and file source path for the class). So CSLint is not able to precisely point place in the sources where deadlock happens. Right now it just reports class and method names and name of locked monitor. If somebody knows how to solve the problem, will  be glad to get your suggestions.