【问题标题】:Fortify doesn't recognize lambdaFortify 无法识别 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?可能会向他们提出问题?你展示这段代码的方式,很明显是用的

标签: java java-8 fortify


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2018-04-08
    • 2017-07-31
    • 2022-01-11
    • 2010-09-28
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多