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 是做什么的,但为了澄清问题,未使用哪种方法 -getCountryCodeAsListgetCountryCode 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中的项目列表

vSAN集群 无法识别磁盘处理

电脑无法识别耳机怎么解决 电脑无法识别耳机解决方法

ActiveMQ 无法识别 Stomp:传输方案无法识别:[stomp+ssl]

手机USB插入电脑后电脑无法识别