Sorry for the delay... One thing to note is you won't get any warnings like PyLint provides, but it will let you interrogate the analysis. Here's the basic code:
string code = "def f(): pass"; // create an interpreter instance and an analyzer for that interpreter. var factory = new IronPythonInterpreterFactory(ProcessorArchitecture.X86); // IronPython specific //var factory = InterpreterFactoryCreator.CreateAnalysisInterpreterFactory(new Version(2, 7)); // generic CPython interpreter var analyzer = new PythonAnalyzer(factory, factory.CreateInterpreter(), "__builtin__"); // add some code into the interpreter. var sourceUnit = new StringReader(code); var entry = analyzer.AddModule("foo.py", "foo.py", null); using (var parser = Parser.CreateParser(sourceUnit, PythonLanguageVersion.V27, new ParserOptions() { BindReferences = true })) { entry.UpdateTree(parser.ParseFile(), null); } // analyze that code entry.Analyze(CancellationToken.None); // now you can query the resulting analysis entry.Analysis.GetTypesByIndex("f", code.Length); To reference this you just need to add a reference to Microsoft.PythonTools.Analysis for the core analyzer/interpreter support and Microsoft.PythonTools.IronPython.Interpreter for the IronPython specific interpreter support (which understands all of the .NET namespaces). This is just analyzing a single file but you can easily expand it to analyze multiple files, pull those files off disk, etc... Hopefully that can get you started... From there you can start digging into the analyzer code to extend it to support any additional warnings you want. From: Ironpython-users [mailto:ironpython-users-bounces+dinov=microsoft....@python.org] On Behalf Of Joseph Mortensen Sent: Tuesday, October 14, 2014 3:44 PM To: ironpython-users@python.org Subject: Re: [Ironpython-users] static analysis tool Could anyone link me on how to use PTVS's analyzer? From: Dino Viehland [mailto:di...@microsoft.com] Sent: Tuesday, September 30, 2014 8:12 PM To: Joseph Mortensen; ironpython-users@python.org<mailto:ironpython-users@python.org> Subject: RE: static analysis tool Do you want to create your own static analysis rules or just use an existing checker? If it's the latter you could use PTVS's analyzer (I can point you to some example code if so). If it's the former we eventually want to add it to PTVS and when we do that we should pick up IronPython support for free. We'd also accept it as a contribution ;) From: Ironpython-users [mailto:ironpython-users-bounces+dinov=microsoft....@python.org] On Behalf Of Joseph Mortensen Sent: Tuesday, September 30, 2014 10:29 AM To: ironpython-users@python.org<mailto:ironpython-users@python.org> Subject: [Ironpython-users] static analysis tool I'm trying to static analysis on python code that has very heavy usage of .NET libraries. I've seen pyflakes, pylint, and pychecker as the main tools to do this stuff in python, but I haven't gotten any of them working properly with IronPython in windows. Are there any recommendations for something that could analyze: import clr clr.AddReference("System") from System import String stuff = String("my string") print stuff stuff.ThisDoesntExist() without tripping up on the System and String imports and find that "stuff.ThisDoesntExist()" doesn't actually exist? Thanks, Joe
_______________________________________________ Ironpython-users mailing list Ironpython-users@python.org https://mail.python.org/mailman/listinfo/ironpython-users