diff --git a/sonar-keyware-plugins-cxx/src/main/java/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.java b/sonar-keyware-plugins-cxx/src/main/java/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.java index 3ae7dc8..af8ccb4 100644 --- a/sonar-keyware-plugins-cxx/src/main/java/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.java +++ b/sonar-keyware-plugins-cxx/src/main/java/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.java @@ -10,6 +10,7 @@ import com.keyware.sonar.cxx.SubscriptionAstVisitor; import com.sonar.cxx.sslr.api.AstNode; import com.sonar.cxx.sslr.api.AstNodeType; import com.sonar.cxx.sslr.api.Grammar; +import org.checkerframework.checker.units.qual.C; import org.sonar.check.Priority; import org.sonar.check.Rule; import org.sonar.cxx.parser.CxxGrammarImpl; @@ -73,6 +74,7 @@ public class CmdDataVerifyChecker extends SquidCheck { if("if".equals(astNode.getToken().getValue())){ //获取其中的参数 List astNodeList = astNode.getDescendants(CxxGrammarImpl.expressionList); + astNodeList.addAll(astNode.getDescendants(CxxGrammarImpl.condition)); for (AstNode expr:astNodeList) { lists.add(expr.getToken().getValue()); } diff --git a/sonar-keyware-plugins-cxx/src/test/resources/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.cc b/sonar-keyware-plugins-cxx/src/test/resources/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.cc index e7fa8f1..8a58f92 100644 --- a/sonar-keyware-plugins-cxx/src/test/resources/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.cc +++ b/sonar-keyware-plugins-cxx/src/test/resources/com/keyware/sonar/cxx/rules/checkers/CmdDataVerifyChecker.cc @@ -3,13 +3,14 @@ int main() { std::string command = "echo Hello, World!"; // 要构建的命令 - -// if(a(command)){ -// } // if(command.contains("/") ){ // } +// if(command == ""){ +// } + // 使用system函数执行命令 - int result = system(command); + int result = system(command.c_str()); // error + if (result == 0) { std::cout << "命令执行成功。" << std::endl;