我正在使用this GitHub存储库尝试从CMD运行StyleCop。我下载了GitHub存储库,并使用VS2017在本地计算机上构建了它。我试图运行批处理脚本 这是我到目前为止所做的:
然后我尝试运行'sample.bat'(.. \ source \ StyleCopCmdLine \ bin \ Debug \ sample.bat),它执行以下操作(并由所有者测试回购的来源):
然后,批处理脚本运行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 会得到完全相同的结果。
我尝试过的其他存储库,或者出现错误或相同的问题:
为什么到目前为止我尝试过的所有方法都不能复制简单的'RightClick-> Run StyleCop'?
对于某些背景,我试图从CMD或PowerShell运行StyleCop分析,以便可以在TFSBuild 2015中将其作为构建步骤来运行。
编辑-已在多台具有相同问题的计算机上进行了测试。
编辑2 -将所有源代码文件加载到StyleCop分析器中,然后开始分析之后,分析似乎运行了大约<0.1秒-这显然是不对的,对所有源代码文件的分析应该花费比这更长的时间。我的想法是,在StyleCop DLL内的某个地方捕获了一个错误,但未记录该错误,然后分析完成,但是它仍然返回“ true”,表明分析成功,即使它显然未正确运行。
答案 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。 现在可以使用这些设置运行分析