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”?我还想知道是否有添加跳棋的方法(我找不到扩展点)
# 1 楼答案
您可以尝试扩展该类以执行自己的检查,但始终使用基本检查程序。也许为您的语言扩展创建一组新的跳棋会更好。看看here,你会发现如何添加新的跳棋
# 2 楼答案
你绝对可以添加新的跳棋。@greywolf82的链接中提到的扩展点是^{
我不知道有什么方法可以更精细地修改
ReturnChecker
的行为,从而完全禁用特定的问题类型。您最好禁用ReturnChecker
,并通过所需的修改将其代码复制到自己的检查器中。(也可以使用org.eclipse.cdt.codan.core.checkerEnablement
扩展点声明性地完成禁用。)