Fortify 无法识别 lambda

Min*_*sha 5 java java-8 fortify

死代码:未使用的方法

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;
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?有什么指点吗?

小智 3

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

因此,对您的问题的简单回答是,除非 Fortify 在其高阶分析器中实现对 Java lambda 表达式的支持,否则您实际上无法做任何事情。

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