【问题标题】:StyleCop from C# wrapper not detecting violations来自 C# 包装器的 StyleCop 未检测到违规
【发布时间】:2018-07-25 10:07:03
【问题描述】:

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

  • 以 ZIP 格式下载并解压缩到一个文件夹中。
  • 在 VS2017 中打开解决方案并构建它(没有错误)。

然后我尝试运行“sample.bat”(..\source\StyleCopCmdLine\bin\Debug\sample.bat),它执行以下操作(并且由测试 repo 的来源):

  • 加载源文件..\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 个违规。

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

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

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

  • StyleCopCLI
  • StyleCopCmd
  • StyleCop-Runner
  • StyleCopConsole

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

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

编辑 - 这已经在多台机器上进行了测试,存在相同的问题。

EDIT 2 - 在我将所有源代码文件加载到 StyleCop 分析器中,然后开始分析后,分析似乎运行了 ~

【问题讨论】:

    标签: c# batch-file cmd stylecop


    【解决方案1】:

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

    在初始化 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。 分析现在使用这些设置运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多