有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有扩展Codan ReturnChecker的方法?

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()。编辑器将函数标记为“不返回,函数中返回非空”

是否有方法覆盖此ReturnChecker(或任何其他检查器),以便仅在某些情况下不调用“reportNoRet”?我还想知道是否有添加跳棋的方法(我找不到扩展点)


共 (2) 个答案

  1. # 1 楼答案

    您可以尝试扩展该类以执行自己的检查,但始终使用基本检查程序。也许为您的语言扩展创建一组新的跳棋会更好。看看here,你会发现如何添加新的跳棋

  2. # 2 楼答案

    你绝对可以添加新的跳棋。@greywolf82的链接中提到的扩展点是^{

    我不知道有什么方法可以更精细地修改ReturnChecker的行为,从而完全禁用特定的问题类型。您最好禁用ReturnChecker,并通过所需的修改将其代码复制到自己的检查器中。(也可以使用org.eclipse.cdt.codan.core.checkerEnablement扩展点声明性地完成禁用。)