CodeQL 文档

缺少格式参数

ID: java/missing-format-argument
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - correctness
   - external/cwe/cwe-685
Query suites:
   - java-security-and-quality.qls

单击以在 CodeQL 存储库中查看查询

当使用 printf 样式格式字符串格式化字符串时,必须确保提供的参数数量与格式字符串引用的参数数量相匹配。多余的参数将被静默丢弃,这可能不是预期行为,而参数太少将导致 IllegalFormatException

格式字符串由 StringFormatterConsolePrintWriterPrintStream 类上的 format 方法使用。其中几个类还提供了方法别名 printf。类 Console 有两个额外的方法 readLinereadPassword,它们也使用格式字符串。

建议

向格式化方法提供正确数量的参数,或更改格式字符串以使用正确参数。

示例

以下示例仅提供一个要格式化的参数,但格式字符串引用两个参数,因此这将引发 IllegalFormatException

System.out.format("First string: %s Second string: %s", "Hello world");

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私