在org.eclipse.cdt.codan.internal.core.CodanRunner中,我找到了以下代码:
CheckersRegistry chegistry = CheckersRegistry.getInstance();chegistry包含很多Checker,包括一个ReturnChecker。
...
for (IChecker checker : chegistry) {
...
((IRunnableInEditorChecker) checker).processModel(model, context);
...
}这段代码最终调用ReturnChecker的方法在函数体(IASTFunctionDefinition)中的语句中搜索返回语句。如果缺少该语句,则调用reportNoRet()。编辑器将该函数标记为"No return,in function returning non-void“。
有没有一种方法可以覆盖这个ReturnChecker (或任何其他检查器),使它在某些情况下不会调用"reportNoRet“?我还想知道是否有方法可以添加棋盘(我找不到扩展点)。
发布于 2019-07-30 04:23:09
您可以尝试扩展该类以执行您自己的检查,但将始终使用基本的检查器。也许为你的语言扩展创建一组新的棋子会更好。看一看here,你会发现如何添加新的跳棋。
发布于 2019-07-31 12:23:29
你绝对可以添加新的跳棋。正如在@greywolf82的链接中提到的,扩展点是org.eclipse.cdt.codan.core.checkers。
我不知道有什么方法可以更细粒度地修改ReturnChecker的行为,而不是完全禁用特定的问题类型。您最好禁用ReturnChecker,然后根据需要的修改将其代码复制到您自己的检查器中。(禁用也可以使用org.eclipse.cdt.codan.core.checkerEnablement扩展点以声明方式完成)。
https://stackoverflow.com/questions/57247884
复制相似问题