C#包装程序中的StyleCop无法检测到违规

时间:2018-07-25 10:07:03

标签: c# batch-file cmd stylecop

我正在使用this GitHub存储库尝试从CMD运行StyleCop。我下载了GitHub存储库,并使用VS2017在本地计算机上构建了它。我试图运行批处理脚本 这是我到目前为止所做的:

  • 以ZIP格式下载并提取到文件夹中。
  • 在VS2017中打开解决方案并进行构建(没有错误)。

然后我尝试运行'sample.bat'(.. \ source \ StyleCopCmdLine \ bin \ Debug \ sample.bat),它执行以下操作(并由所有者测试回购的来源):

  • 加载源文件 .. \ source \ StyleCopWrapper.Tests \ Testfiles \ FileWith7Errors.cs
  • 加载设置文件 .. \ source \ StyleCopWrapper.Tests \ TestFiles \ AllSettingsEnabled.StyleCop

然后,批处理脚本运行StyleCopCmdLine并返回以下内容:

C:\Users\X\Desktop\Test\StyleCopCmdLine- 
master\source\StyleCopCmdLine\bin\Debug>Rem Runs the command line with 
reasonable parameters

C:\Users\X\Desktop\Test\StyleCopCmdLine- 
master\source\StyleCopCmdLine\bin\Debug>StyleCopCmdLine -- 
SourceFiles="..\..\..\StyleCopWrapper.Tests\TestFiles\FileWith7Errors.cs" -- 
s=@"..\..\..\StyleCopWrapper.Tests\TestFiles\AllSettingsEnabled.StyleCop"
StyleCopCmdLine 1.0.0.0
Copyright ©  2017

  -f, --SourceFiles                    Required. The files or folders to scan.
                                       Multiple files or folders can be listed

  -s, --SettingsFile                   Required. The settings to use.

  --AdditionalAddInPaths               (Default: System.String[]) The paths to
                                       rules files. Multiple folders can be
                                       listed

  --ShowOutput                         (Default: False) Show the addin of files
                                       to scan output in the log.

  --CacheResults                       (Default: False) Cache scan results.

  --XmlOutputFile                      (Default: .\stylecop.xml) Xml Output
                                       File.

  --LogFile                            (Default: .\stylecop.log) Log File.

  --ForceFullAnalysis                  (Default: True) Force a full analysis.

  --TreatViolationsErrorsAsWarnings    (Default: True) Treat violation errors
                                       as warnings.

  --MaximumViolationCount              (Default: 1000) Maximum violations
                                       before the scan is stopped.

  -v, --verbose                        (Default: True) Prints the configuration
                                       messages to standard output.

  --help                               Display this help screen.


SourceFiles: ..\..\..\StyleCopWrapper.Tests\TestFiles\FileWith7Errors.cs
SettingsFile: 
@..\..\..\StyleCopWrapper.Tests\TestFiles\AllSettingsEnabled.StyleCop
MaximumViolationCount: 1000
ShowOutput: False
CacheResults: False
ForceFullAnalysis: True
XmlOutputFile: .\stylecop.xml
LogFile: .\stylecop.log
TreatViolationsErrorsAsWarnings: True
AdditionalAddInPaths: C:\Program Files (x86)\StyleCop 4.7


No violations encountered
Succeeded [True]
Violation count [0]

C:\Users\X\Desktop\Test\StyleCopCmdLine-master\source\StyleCopCmdLine\bin\Debug>pause

如您所见,该脚本未返回任何违规,但是当我打开StyleCopCmdLine解决方案时,导航至文件“ FileWith7Errors”,右键单击并单击“运行StyleCop”,它将返回7个违规。

我还尝试创建自己的使用StyleCopConsole的StyleCop模块(来自官方StyleCop存储库),但是当我在任何有违规行为的文件上运行它时(我确保选择了正确的设置文件),我永远都不会受到任何侵犯...

删除 C:\ Program Files(x86)\ StyleCop 4.7 会得到完全相同的结果。

我尝试过的其他存储库,或者出现错误或相同的问题:

  • StyleCopCLI
  • StyleCopCmd
  • StyleCop-Runner
  • StyleCopConsole

为什么到目前为止我尝试过的所有方法都不能复制简单的'RightClick-> Run StyleCop'

对于某些背景,我试图从CMD或PowerShell运行StyleCop分析,以便可以在TFSBuild 2015中将其作为构建步骤来运行。

编辑-已在多台具有相同问题的计算机上进行了测试。

编辑2 -将所有源代码文件加载到StyleCop分析器中,然后开始分析之后,分析似乎运行了大约<0.1秒-这显然是不对的,对所有源代码文件的分析应该花费比这更长的时间。我的想法是,在StyleCop DLL内的某个地方捕获了一个错误,但未记录该错误,然后分析完成,但是它仍然返回“ true”,表明分析成功,即使它显然未正确运行。

1 个答案:

答案 0 :(得分:0)

因此,事实证明,实际上没有正确运行分析的原因是由于我使用了插件路径。

初始化StyleCopConsole类时,它需要以下参数:

StyleCopConsole(string settings, 
                bool writeResultsCache, 
                string outputFile, 
                ICollection<string> addInPaths, 
                bool loadFromDefaultPath);

之前,我将'addInPaths'定义为null,或者显式传递了两个StyleCop CSharp DLL路径。解决方法是改为将外接程序路径定义为在系统上安装StyleCop:

var addInPath = @"C:\Program Files (x86)\StyleCop 4.7";

然后,StyleCopConsole将本身获取所有必需的DLL。 现在可以使用这些设置运行分析