声纳自定义小部件

Posted

技术标签:

【中文标题】声纳自定义小部件【英文标题】:Sonar Custom Widget 【发布时间】:2016-02-04 07:01:27 【问题描述】:

我使用 github 中提供的源代码创建了一个小部件。现在我在 SonarQube V5.3 中使用该小部件。这是我从中获得源代码的地方: https://github.com/SonarSource/sonar-examples/tree/master/plugins/sonar-reference-plugin

当我使用这个小部件时,它会在多个项目中显示相同的数据。我想知道是否有任何方法可以为不同的项目显示不同的数据。请分享你的想法。下面是显示 ruby​​ 小部件的代码

    import org.sonar.api.web.AbstractRubyTemplate;
    import org.sonar.api.web.Description;
    import org.sonar.api.web.RubyRailsWidget;
    import org.sonar.api.web.UserRole;
    import org.sonar.api.web.WidgetCategory;
    import org.sonar.api.web.WidgetProperties;
    import org.sonar.api.web.WidgetProperty;
    import org.sonar.api.web.WidgetPropertyType;
    import org.sonar.api.batch.CheckProject;
    import org.sonar.api.resources.Project;
    @UserRole(UserRole.USER)
    @Description("Sample")
    @WidgetCategory("Sample")
    @WidgetProperties(
      @WidgetProperty(key = "Index",type=WidgetPropertyType.TEXT
      ),

    )
    public class OneMoreRubyWidget extends AbstractRubyTemplate implements RubyRailsWidget 

      @Override
      public String getId() 
        return "Sample";
      

      @Override
      public String getTitle() 
        return "Sample";
      

      @Override
      protected String getTemplatePath() 

          return "/example/Index.html.erb";
      
    

非常感谢您

【问题讨论】:

【参考方案1】:

您尚未在 .java 文件中为您的小部件 (@WidgetScope("GLOBAL")) 指定全局范围,因此这是您的 .erb 文件中的内容的问题。

这个Widget Lab 属性widget 应该给你一些指示。具体来说:您想在您的小部件中选择@project,并使用@project.uuid 进行查询。 Here's another 用于比较的项目级小部件。

不过,您应该知道,SonarSource 正在积极努力从平台中移除 Ruby,因此在未来某个日期,您可能最终会重新编写小部件(可能使用纯 javascript)。

【讨论】:

非常感谢您的快速回复。你能帮我理解使小部件显示不同小部件的任何逻辑应该写在.erb文件上吗?我正在尝试开发的这个小部件是一个完全开箱即用的小部件。为此,我需要在 sonar.properties 文件中包含任何内容吗?请指教。提前谢谢你! 看看 Widget 实验室插件(文档:docs.sonarqube.org/display/PLUG/Widget+Lab+Plugin)。

以上是关于声纳自定义小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何设置自定义小部件的背景颜色和边框宽度?

如何在不导入自定义小部件类包的情况下使用自定义小部件和 uic.loadUi?

如何拖放自定义小部件?

自定义小部件的 Flutter 小部件测试失败

在 Kivy 中传递自定义小部件属性

Flutter 小部件包裹在自定义小部件中