首页 > 解决方案 > Fortify 无法识别 lambda

问题描述

死代码:未使用的方法

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;
}

如何解决这个问题?任何指针?

标签: javajava-8fortify

解决方案


目前,Fortify SCA 仅支持它可以扫描的使用 lambda 表达式的语言子集中的 lambda。Fortify SCA 实现了一个新的内置分析器,他们称之为高阶分析器来完成此任务,但它仅适用于以下语言:JavaScript、Python、Ruby 和 Swift。

因此,对您的问题的简短回答是,在 Fortify 在其高阶分析器中实现对 Java lambda 表达式的支持之前,您实际上什么都做不了。

Fortify SCA 18.20 用户指南文档中的部分


推荐阅读