“…There are many constraint solvers that provide, to a certain degree, support for strings: bit-vector based solvers like Hampi [45] and Kaluza [3]; automata-based solvers like Violist [46], Stranger [6], [14], ABC [47], StrSolve [15], Pass [16], StringGraph [17], and JST [18]; word-based solvers like Norn [48], S3 [8], and the aforementioned Sushi, CVC4, and Z3-str2. Among them, Stranger, JST, StringGraph, S3, Z3-str2, and CVC4 support the most number of string operations (e.g., startsWith, endsWith, replace, replaceAll, length, and matches) that are essential in the context of vulnerability detection; they also support numeric constraints.…”