eclipse-plugin - 以编程方式停用所有 Codan Checkers
问题描述
如何以编程方式为我的内容类型或在我的编辑器中停用所有 Codan Checkers?
我知道我可以在Window -> Preferences -> C/C++ -> Code Analysis
. 但我需要以编程方式做到这一点。
实现这一目标的一种方法是修改方法runInEditor()
并processResource()
在org.eclipse.cdt.codan.internal.core.CodanRunner
.
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()
有没有办法在不修改 CDT 代码的情况下抑制 Codan Checkers?
解决方案
您应该能够使用org.eclipse.cdt.codan.core.checkerEnablement
扩展点来执行此操作。
我找不到为其生成的文档,但您可以在此处查看它的架构。
扩展点允许您指定继承自的类org.eclipse.cdt.codan.internal.core.ICheckerEnablementVerifier
并提供boolean isCheckerEnabled(IChecker, IResource, CheckerLaunchMode)
确定给定检查器是否可以在给定启动模式下在给定资源上运行的方法。如果任何启用验证程序返回 false,则不会运行检查程序。
ICheckerEnablementVerifier
在插件中注册您自己的实现plugin.xml
:
<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;
}
}
}
推荐阅读
- spring-boot - 无法将 JConsole 连接到我在 Docker 容器中运行的 Springboot 应用程序
- sql-server - 如何在 SQL Server 2008 未排序表中获取下一行
- r - 将字符矩阵转换为数字数据框的快速有效方法?
- networking - 如何仅使用 BPF 查找不均匀的端口号?
- javascript - 在纯 javascript 中获取自由文本和单选按钮值
- sql - 在 SQL Server 的视图中将每个唯一 ID 的多行组合为具有多个索引列名称的单行
- ios - danielgindi/Charts:获取左侧 yAxis 宽度
- python - 使用 Python 从 Excel 文件中读取元数据/属性
- c - 将“falign-functions”编译器标志显式设置为某个值的动机是什么?
- python - 避免在 Docusign 中登录身份验证