从StyleCop的C#包装未检测违反(StyleCop from C# wrapper not d

2019-11-05 01:23发布

我使用这个 GitHub库,试图从CMD运行了StyleCop。 我下载了GitHub库,并使用VS2017建立它在我的本地机器上。 我试图运行批处理脚本这是我到目前为止已经完成:

  • 下载为ZIP,并提取到一个文件夹。
  • 开业于VS2017的解决方案,并建立了它(没有错误)。

然后我试图运行“sample.bat”(.. \源\ StyleCopCmdLine \ BIN \调试\ sample.bat),其执行以下操作(以及由源测试回购的所有者创建):

  • 加载源文件.. \源\ StyleCopWrapper.Tests \ Testfiles \ FileWith7Errors.cs
  • 加载设置文件.. \源\ 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)的\ 4.7 StyleCop的给出完全相同的结果。

我试过,要么其他回购得到一个错误,或者同样的问题:

  • StyleCopCLI
  • StyleCopCmd
  • 了StyleCop,亚军
  • StyleCopConsole

为什么所有的方法我都试过到目前为止复制简单的“RightClick->运行了StyleCop”?

对于一些背景,我试图从CMD或PowerShell中运行了StyleCop分析,这样我可以在TFSBuild 2015年生成步骤运行它。

编辑 -这已经与同样的问题多台机器进行测试。

编辑2 -以后我在所有的源代码文件到了StyleCop分析器加载,然后开始分析,该分析显示为〜运行<0.1秒-这显然是不正确的,所有的源代码文件的分析应考虑比这更长的时间。 我的想法是,某处了StyleCop DLL内部被抓的错误,但不会被记录,然后分析结束,但它确实还返回“真”指示分析是成功的,即使它显然不是正常运行.. 。

Answer 1:

因此,原来的原因,它实际上并没有运行分析正确,是因为我使用了插件路径。

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

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

之前,我要么定义“addInPaths”为空,或者在这两个CSHARP StyleCop的DLL路径传递明确。 此修复程序是不是确定了StyleCop的系统上安装的插件路径:

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

然后StyleCopConsole将获得所有必要的DLL文件本身。 分析现在这些设置运行



文章来源: StyleCop from C# wrapper not detecting violations