Fortify无法识别lambda

时间:2018-12-03 06:23:03

标签: java java-8 fortify

  

无效代码:未使用的方法

Fortify正在将lambda方法检测为未使用。例如:我有以下方法:getCountryCode,尽管它在很多地方都使用过,但forify仍将其报告为未使用的方法。

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

如何解决此问题?有指针吗?

1 个答案:

答案 0 :(得分:0)

当前,Fortify SCA仅支持使用lambda表达式的部分语言可以扫描的lambda。 Fortify SCA实现了一个新的内置分析器,他们将其称为高阶分析器来完成此操作,但它仅适用于以下语言:JavaScript,Python,Ruby和Swift。

因此,对这个问题的简短回答是,直到Fortify在其高阶分析器中实现对Java lambda表达式的支持之前,您才能真正做任何事情。

Section from the Fortify SCA 18.20 user guide documentation