当前位置: 首页 > 知识库问答 >
问题:

循环条件的未选中输入-LocalDate的CheckMarx错误

国仰岳
2023-03-14
    public List<ExchangeRate> getExchangeRate(@RequestBody @Validated ExchangeRateRequest exchangeRateRequest) {
        LocalDateTime conversionDateTime = parseConversionDateTime(exchangeRateRequest.getConversionDateTime());
        List<ExchangeRate> exchangeRateList = service.getExchangeRates(exchangeRateRequest, conversionDateTime);
        return exchangeRateList;
    }

    private LocalDate getPreviousBusinessDate(LocalDateTime conversionDateTime) {
        ZonedDateTime localConversionDateTimeWithZone = ZonedDateTime.of(conversionDateTime, ZoneOffset.systemDefault());
        ZonedDateTime conversionDateTimeAtUtc = localConversionDateTimeWithZone.withZoneSameInstant(ZoneOffset.UTC);
        LocalDate currentUtcDate = conversionDateTimeAtUtc.toLocalDate();
        LocalDate prev = currentUtcDate.minusDays(1);
        while(prev.getDayOfWeek()==DayOfWeek.SUNDAY || prev.getDayOfWeek()==DayOfWeek.SATURDAY) {
            prev = prev.minusDays(1);
        }
        return prev;
    }

public class ExchangeRateRequest {
    private final String conversionDateTime;

    @Valid
    private final List<ExchangeRateCurrency> currencies;

    @JsonCreator
    public ExchangeRateRequest(@JsonProperty("conversionDateTime") String conversionDateTime,
                               @JsonProperty("currencies") List<ExchangeRateCurrency> currencies) {
        this.conversionDateTime = conversionDateTime;
        this.currencies = currencies;
    }
}

元素exchangeRateRequest在代码中流动,没有经过验证,最终在ExchangeRateService的getPreviousBusinessDate中的循环条件中使用。JAVA这构成循环条件的未检查输入。

我该怎么解决这个问题?

共有1个答案

南宫阳焱
2023-03-14

我认为这个案例是假阳性的,你没有什么可做的(除了要求你的Checkmark所有者忽略这个结果。

循环条件的未检查输入意味着循环可能会意外运行,因为该条件未被清除。

例如,如果您在循环中进行了硬计算,并且例如您希望从用户那里获得一周中的一天,以便在一周中的下一个Rest日运行您的计算,那么用户可以给您数字8,并且您将获得无限循环。

在你的例子中,循环条件不是一个范围,但它只是检查特定的状态,如果它不在这个状态,代码将继续。

我看不出会发生什么坏事。

 类似资料:
  • 我得到未经检查的输入循环条件在下面的行在我的代码。 我提供了下面的解决方案,但检查马克斯扫描仍然显示相同的错误。 我也使用了getValidinteger()方法,但这两种方法似乎都没有解决这个问题。 这是循环--

  • 我有一个类,其中我们将“两个时态对象之间的时间量”存储到一个长变量monthBt中,并将其用作“for循环”中的测试表达式。然而,我在azure sechub中收到中级安全警告“未检查循环条件的输入”。 验证和删除警告的最佳方法是什么?谢谢

  • 我正在编写一个python游戏,它有以下功能可以向用户询问。 最多可以有4名玩家(最少1名玩家,最多4名玩家) 它会问玩家的名字。如果名称已存在,程序将提示“名称已在列表中”,并要求再次输入名称 如果播放器在播放器名称输入中输入空字符串,它将退出。 它会询问玩家想要玩多少n个随机数字(使用randint(开始,停止)。最多只允许3位数字 我知道我必须使用

  • 问题内容: 我需要让用户输入一个数字以用作范围的开始,然后输入另一个数字作为范围的结束。起始编号必须为0或更大,结束编号不能大于1000。两个数字都必须被10整除。我找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对它进行编码,以便在用户输入后进行检查以确保满足条件,如果条件没有环回,请再次输入。这是我到目前为止的代码。 问题答案: 轻松做:

  • 我需要要求用户输入一个数字作为范围的开始,然后输入另一个数字作为范围的结束。开始数必须大于等于0,结束数不能大于1000。两个数字都必须能被10整除。我已经找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对其进行编码,以便在用户输入后,它将检查以确保满足条件,如果不满足条件,则返回并再次输入。这是我目前掌握的代码。

  • 编辑:重新措辞 我有一个账户列表:帐户 当我总结这份清单时,我得到了账户数量和账户总价值的概述 名称摘要 我添加了马克,因为他现在将是一个帐户所有者,但他目前没有任何帐户。 第一步是查看每个人应该拥有的账户的平均数。有25个账户,5个所有者,所以每个人都应该有5个账户。总价值为15600英镑,共有5名所有者,因此每个人的账户价值应该在3120英镑左右。这是一个估计值,所以我对它稍微偏离一点没意见。