Sonar插件查询数据库

时间:2016-05-09 12:00:34

标签: database plugins sonarqube

我正在开发一个声纳插件,我对它有一些疑问。 我的插件需要从数据库中检索数据来操作它们并在页面中显示它们。

目前,我的插件是使用JDBC驱动程序查询数据库,但我认为这将是生产中的问题。 所以我想找到一种方法,使用API​​或声纳对象从我的插件连接和查询数据库(只是选择查询)...

我知道有一些WebService,但是他们没有提供我需要的所有信息,所以我必须自己进行查询。

我的插件适用于Sonarqube 4.1。

我希望我的解释清楚。

2 个答案:

答案 0 :(得分:1)

我想我找到了解决方案:

我有一个Class在构造函数中检索databaseSessionFactory。我在某地读过Sonar使用构造函数的依赖注入。

    public class MyClass implements WebService{

        privateDatabaseSessionFactory sessionFactory;

        public MyClass(DatabaseSessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
    }

之后,在这个类中,我可以使用SessionFactory变量来查询数据库:

        DatabaseSession s = sessionFactory.getSession();
        String sqlQuery ="SELECT d.data FROM " + SnapshotSource.class.getName() + " d "
                    + "WHERE d.id = :Id";
        Query query = s.createQuery(sqlQuery);

        query.setParameter("Id", 1);

        List<String> queryResult = (List<String>) query.getResultList();
        //queryResult.get(0) contains the source

在此示例中,我获取了数据库中的第一个快照源。 我希望它是一个很好的解决方案,它可以帮助任何人。

答案 1 :(得分:0)

您不应直接查询SonarQube数据库。数据库架构是私有的,如有更改,恕不另行通知,此外,您还有可能对SonarQube本身产生副作用。

如果您需要从数据库中读取一些内容,您应该使用Web服务API来查询SonarQube操作的大多数“对象”。 在这种情况下,这不是一个真正的插件,只是一个外部客户端应用程序。

如果您想编写一个在SonarQube UI中显示内容的SonarQube插件(如自定义小部件),您还可以使用SonarQube Java API。