Fortify 无法识别 lambda
Posted
技术标签:
【中文标题】Fortify 无法识别 lambda【英文标题】:Fortify doesn't recognize lambda 【发布时间】:2018-12-03 06:23:03 【问题描述】:死代码:未使用的方法
Fortify 正在检测未使用的 lambda 方法。例如:我有以下方法:getCountryCode
,尽管它在很多地方都使用过,但 fortify 将其报告为未使用的方法。
private List<String> getCountryCodeAsList(Map<Long, String> countryData, List<String> nationalityRestriction)
return nationalityRestriction.parallelStream().filter(r -> !org.apache.commons.lang3.StringUtils.isBlank(r))
.map(r -> getCountryCode(countryData, r)).collect(Collectors.toList());
private String getCountryCode(Map<Long, String> countryData, String r)
return !org.apache.commons.lang3.StringUtils.isBlank(r) ? countryData.get(Long.parseLong(r)): null;
如何解决这个问题?有什么指点吗?
【问题讨论】:
我能知道为什么它被否决了吗?在投反对票之前给出原因,这有助于人们理解问题的问题。 如果你不能给出理由,就停止投票,这根本没有任何意义...... 不确定 fortify 是做什么的,但为了澄清问题,未使用哪种方法 -getCountryCodeAsList
或 getCountryCode
?
getCountryCode 被标记为未使用
可能是 fortify 不适用于 java-8?可能会向他们提出问题?你展示这段代码的方式,很明显是用的
【参考方案1】:
目前,Fortify SCA 仅在它可以扫描的使用 lambda 表达式的语言子集中支持 lambda。 Fortify SCA 实现了一个新的内置分析器,他们称之为高阶分析器来完成此任务,但它仅适用于以下语言:javascript、Python、Ruby 和 Swift。
所以对您的问题的简短回答是,在 Fortify 在其高阶分析器中实现对 Java lambda 表达式的支持之前,您实际上什么都做不了。
【讨论】:
以上是关于Fortify 无法识别 lambda的主要内容,如果未能解决你的问题,请参考以下文章
C# LINQ to Entities 无法识别方法“布尔”
使用Fortify标识与特定jar文件关联的Artifactory中的项目列表