【发布时间】:2022-12-09 01:54:10
【问题描述】:
我想修改/使规则仅针对公共接口(而不是公共类等)。这可能吗 ?我在 Java 代码中使用了这个规则,但它对我的项目来说太严格了,我很想知道是否有办法稍微改变一下。
【问题讨论】:
我想修改/使规则仅针对公共接口(而不是公共类等)。这可能吗 ?我在 Java 代码中使用了这个规则,但它对我的项目来说太严格了,我很想知道是否有办法稍微改变一下。
【问题讨论】:
对于 SonarQube 上的现有规则集,请与您的声纳管理员联系以更改对代码强制执行的规则,并将该特定规则从全局强制执行中删除。
有几次我去找我使用的安装工具的管理员,说“这条规则不是我关心或不会执行的,只会让它变得混乱”,然后让他们删除这条规则来自全局运行的规则集。
是否可以编写自己的规则?
对的,这是可能的。来自 SonarQube 的文档:Adding coding rules 你有一些选择。您可以为 SonarQube 编写一个插件并将其添加到您的实例 (docs),或者您可以编写一个外部应用程序来分析 SonarQube 使用的代码。
如果您没有自己的 sonarqube 实例,或者不想编写相关的插件或外部工具……您可能需要查看 PMD (site)。
对于 PMD,编写自定义规则可以简单得多(docs)。 PMD 的工作方式之一是将 Java 代码“编译”为 Java 抽象语法树的 XML 表示形式,然后针对该 XML 运行 xpath 查询 (tutorial)。
然后可以将 xpath 规则包含在项目的配置中。
为我正在处理的代码关闭它怎么样?
如果某个特定规则是您不想调用的规则,您可以使用 @SuppressWarnings("java:S106") 抑制它(特定的备件警告供 System.out.println 使用,但相同的结构可用于其他警告)或通过在线添加// NOSONAR too strict。在某些地方,我有这样的 cmets,其中遵循特定代码集的规则是有问题的,并针对该行、方法或类抑制它——带有关于的评论为什么完成了。
该特定规则...我将同意 Java(现在是 Oracle)指南并遵守它。原因是,如果其他人处理代码,他们会希望它遵循该约定。对什么东西应该在代码中的什么位置有一个一致的理解,这样另一个开发人员就不需要挖掘整个文件来找到预期位于顶部(在字段定义下)的构造函数,这是一件好事.更重要的是,它限制了开发人员为使事情与约定一致而导致以后大量 style: updating code to follow style guide 提交的未来情况。
【讨论】: