HP Fortify扫描会出现ASP预编译错误

时间:2015-05-19 22:03:00

标签: asp.net fortify pre-compilation

我正在使用Visual Studio 2012和HP Fortify 4.21以及最新的规则包。

代码(C#)位于具有HP Fortify的同一台计算机上,我只使用AWB而不是SCC。代码在开发人员进行构建时成功构建,但是当我尝试使用Fortify进行扫描时,我收到错误。

  

ASP预编译错误

无论是从VS还是从命令行启动,都会发生此错误。日志显示没有错误或警告,但最后说明没有要存储的内容,因此永远不会创建fpr文件。如果我从Audit Workbench运行扫描,它只会崩溃,说明它无法创建构建ID。

我确实找到了解决ASP问题的建议(下面),但它失败了,并且没有创建fpr文件以便能够运行最后一行(进行扫描)。

我感谢任何帮助!

第1步:清洁 sourceanalyzer -b" Build ID" -clean

第2步:翻译/构建 sourceanalyzer -b" Build ID" -Xmx1280M -Xss8M -debug -logfile trans.log devenv" Sample.sln" /重建调试

第3步:分析 sourceanalyzer -b" Build ID" -Xmx1280M -Xss8M -debug -logfile scan.log -scan -f Results.fpr

6 个答案:

答案 0 :(得分:3)

我遇到了这个问题,这解决了我的问题。

步骤1.单击" BUILD"标签 步骤2.单击"清洁解决方案" 步骤3.解决方案资源管理器(bin和obj)中最有可能出现两个文件夹。右键单击每个并删除它,不管你做什么顺序都没关系。 步骤4.单击" BUILD"标签 步骤5.单击"重建解决方案" 步骤6.尝试再次运行FORTIFY

额外步骤 步骤7.如果仍然无法检查web.config是否有错误。该项目将构建错误,但会导致预编译失败并使用Fortify。

步骤8.尝试通过转到HP Fortify为Fortify分配更多内存 - >选项 - >项目设置 - >记忆(MB) - > 1024(或更高)。

答案 1 :(得分:0)

我遇到过类似的问题。在另一台机器上试试。有时它会使它工作。当它没有由Fortify错误引起时。使用Fortify支持帮助我跟踪问题。惠普提出了一个错误,虽然我不相信它会有所帮助。也就是说,一旦我知道文件中的哪个构造导致了失败,我就能够修改文件以使Fortify完成。

抱歉,我没有更多的帮助。

答案 2 :(得分:0)

问题在于您的一个或多个ASPX文件。对于dotnet Web表单,ASPX页面不是由Visual Studio编译的,它们是在服务器上动态编译的。为了让Fortify扫描该代码,它正在调用ASPNET_compiler来编译您的ASPX文件。从命令行传递-debug,然后在日志中查找对ASPNET_compiler的调用。您可以复制这些参数,然后在Visual Studio命令提示符下运行它们以查找导致问题的ASPX文件。请记住,在向ASPNET_compiler传递一个要编译的目录时,它会在找到第一个错误时死掉。您可能需要运行几次才能找到所有错误。

答案 3 :(得分:0)

检查AWB中的“分析信息”选项卡以查找相关的扫描错误。另请查看扫描日志文件中的相关条目。

如果Eric是正确的,您可能希望将sourceanalyzer放入构建脚本中以防问题再次出现。

答案 4 :(得分:0)

第1步 - 点击" build"标签 第2步 - 点击"清洁解决方案" 步骤3. - 解决方案资源管理器(bin,obj)中出现了2个文件夹。右键单击
每个1,删除它,不重要的顺序。步骤4.点击"构建"选项卡步骤5.单击"重建解决方案"步骤6.尝试再次运行强化

额外的步骤 步骤7. - f仍然无法检查web.config错误。项目构建错误导致预编译失败强化。

步骤8. - 尝试分配更多ram fortify去hp fortify - >选项 - >项目设置 - >记忆(mb) - > 1024(或更高)。

以下链接有助于解决我的问题。 http://nayviocde12.blogspot.be/2012/08/aspnet-hp-fortify-scans-get-asp-pre.html

答案 5 :(得分:0)

强化SCA版本16.20及之后

从Fortify SCA版本16.20开始,ASP.Net代码不再使用Microsoft aspnet_compiler.exe,因此不会再出现此特定问题。

在Fortify SCA版本16.20之前

调试预编译器问题的首选方法是将此命令添加到Visual Studio中Web项目的生成后事件中,这样错误就会出现在错误列表中。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe" -v / -p $(ProjectDir)

另外要记住的是,如果您的文件不属于解决方案但属于Web项目目录,那么aspnet_compiler仍会读取它们。

当开发人员从Visual Studio中排除文件时,我发现这种情况很常见。这不会删除它们。或者,如果他们删除它们,则通过Visual Studio界面删除,但不从底层源代码存储库删除,并且只在结帐时再次下载。

检查此方法的一种简单方法是在Visual Studio解决方案资源管理器窗口中启用“显示所有文件”。