与 C++ 中的空字符串相比,变异是否存在?
Mutation Survives When Comparing to Empty String in C++?
我正在修改我的代码,它抱怨以下修改幸存:
--- /home/user/src/file.cc 2019-12-03 13:48:12.510311
+++ /home/user/src/file.cc 2019-12-03 14:00:14.164006
@@ -283,7 +283,7 @@
}
bool SomeClass::isValid(proto::SomeProto const& task_pb) const {
- if (task_pb.task_id() == "") {
+ if (task_pb.task_id() < "") {
log(LOG_WARNING, "no id given");
return false;
} else if (task_pb.task_type() == proto::TaskType::UNKNOWN) {
task_id()
的声明是:
const ::std::string& task_id() const;
有没有可以小于""
的string
?这甚至会被认为是 string
s 的有效突变吗?
std::string
定义了一个字典序"less-than"关系,可以访问using operator<
.
您显示的特定表达式的计算结果将始终为 false
,因为没有字符串排序(按字典顺序)小于空字符串。但这并不会使代码无效,只是毫无意义。我不知道你所说的 "valid mutation" 到底是什么意思,但希望这会为你指明答案。
我正在修改我的代码,它抱怨以下修改幸存:
--- /home/user/src/file.cc 2019-12-03 13:48:12.510311
+++ /home/user/src/file.cc 2019-12-03 14:00:14.164006
@@ -283,7 +283,7 @@
}
bool SomeClass::isValid(proto::SomeProto const& task_pb) const {
- if (task_pb.task_id() == "") {
+ if (task_pb.task_id() < "") {
log(LOG_WARNING, "no id given");
return false;
} else if (task_pb.task_type() == proto::TaskType::UNKNOWN) {
task_id()
的声明是:
const ::std::string& task_id() const;
有没有可以小于""
的string
?这甚至会被认为是 string
s 的有效突变吗?
std::string
定义了一个字典序"less-than"关系,可以访问using operator<
.
您显示的特定表达式的计算结果将始终为 false
,因为没有字符串排序(按字典顺序)小于空字符串。但这并不会使代码无效,只是毫无意义。我不知道你所说的 "valid mutation" 到底是什么意思,但希望这会为你指明答案。