R# Command Line Tools and compiled extensions
In my previous post, I explored how to create a minimalistic ReSharper plugin. After I published it, one of my colleagues inquired if it is possible to use this or any other plugin from ReSharper Gallery with inspectcode.exe from ReSharper Command Line Tools (RCLT). I didn’t know and decided to try it out. Here is what I learned.
The Fast Way
Download RCLT, copy a ReSharper extension (for example this one) next to inspectcode.exe and run it against the solution you want to analyze. That is all you need. However, there is a slightly more complex, but more robust way, which I implemented in a form of a simple tool. If you are going to use the tool or a similar solution in your continuous integration environment or just curious how it works, go to InspectCodeRunner.cs and read comments I left there. The devil is in the detail. For now, let’s have some fun and try it out try it out!
Step 1/4 Prepare a working directory
We are going to keep everything inside ‘RCLTTest’ folder. I’ll refer to it as base_dir
throughout this guide.
mkdir RCLTTest
cd RCLTTest
Step 2/4 Install InspectCodeStarter
git clone https://github.com/MindWrapper/ReSharper.InspectCodeStarter.git
Step 3/4 Prepare project to inspect
git clone https://github.com/MindWrapper/ReSharper.ProjectUnderInspection.git
ReSharper.ProjectUnderInspection
contains a class named FooBar, which will be detected by ReSharper.FooDetector. The class FooBar also contains a method with a high cyclomatic complexity, which will be detected by PowerToys.CyclomaticComplexity plugin. We are going to install both plugins at step #4
Step 4/4 Run the inspection
ReSharper.InspectCodeStarter\inspect.bat ReSharper.ProjectUnderInspection\ProjectUnderInspection.csproj --base-dir=. --plugin=ReSharper.FooDetector.2018.1.0 --plugin=PowerToys.CyclomaticComplexity.2018.1.0 --output=res.html --format=html
This command does 3 actions:
- Installs RCLT into
base_dir\JetBrains.ReSharper.CommandLineTools
. - Installs extensions specified in command line into
base_dir\Plugins
. - Activates plugings and runs inspectcode.exe against
base_dir\ReSharper.ProjectUnderInspection\ProjectUnderInspection.csproj
.
When the inspection is finished, inspectcode.exe produces the base_dir\result.html
as requested by –format=html –output=res.html.
Warnings within the red bars produced by ReSharper.FooDetector and PowerTows.CycolmaticComplexity