如何以编程方式停用我的内容类型或编辑器中的所有Codan Checker?
我知道我可以关闭Window -> Preferences -> C/C++ -> Code Analysis中的跳棋。但是我需要通过编程的方式来实现。
实现这一点的一种方法是修改org.eclipse.cdt.codan.internal.core.CodanRunner中的runInEditor()和processResource()方法。
public static void runInEditor(Object model, IResource resource, IProgressMonitor monitor) {
if (resource != null && !resource.toString().endsWith("blub)) {
processResource(resource, model, CheckerLaunchMode.RUN_AS_YOU_TYPE, monitor);
}
}
public static void processResource(IResource resource, CheckerLaunchMode checkerLaunchMode, IProgressMonitor monitor) {
if (resource != null && !resource.toString().endsWith("blub")) {
processResource(resource, null, checkerLaunchMode, monitor);
}
}对于Unresolved Inclusion警告,我可以重写CPreprocessor,并在被重写的handleProblem()方法中返回do nothing。
有没有办法在不修改CDT代码的情况下抑制Codan Checker?
发布于 2019-09-25 13:08:08
您应该能够使用org.eclipse.cdt.codan.core.checkerEnablement扩展点完成此操作。
我找不到为它生成的文档,但是您可以在here上看到它的模式。
扩展点允许您指定一个继承自org.eclipse.cdt.codan.internal.core.ICheckerEnablementVerifier的类,并提供一个boolean isCheckerEnabled(IChecker, IResource, CheckerLaunchMode)方法,该方法确定给定的检查器是否可以在给定的启动模式下在给定的资源上运行。如果任何启用验证器返回false,则不会运行检查器。
在插件的plugin.xml中注册您自己的ICheckerEnablementVerifier实现
<extension
point="org.eclipse.cdt.codan.core.checkerEnablement">
<verifier class="path.to.MyCheckerEnablementVerifier" />
</extension>以下实现检查内容类型:
public class MyCheckerEnablementVerifier implements ICheckerEnablementVerifier {
@Override
public boolean isCheckerEnabled(IChecker checker, IResource resource, CheckerLaunchMode mode) {
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
IContentType contentType = contentTypeManager.findContentTypeFor(resource.getLocation().toOSString());
if (contentType.getId().equals("contenttypeid")) {
return false;
} else {
return true;
}
}
}https://stackoverflow.com/questions/58075327
复制相似问题