Oracle 自动化构建环境中的PL/SQL预编译和代码质量检查?

Oracle 自动化构建环境中的PL/SQL预编译和代码质量检查?,oracle,plsql,continuous-integration,build-automation,code-analysis,Oracle,Plsql,Continuous Integration,Build Automation,Code Analysis,我们使用Hudson和Maven构建软件。我们有C#、java和最后但并非最不重要的PL/SQL源代码(存储过程、包、DDL、crud) 对于C#和Java,我们进行单元测试和代码分析,但在将PL/SQL源发布到目标数据库之前,我们并不真正了解它们的运行状况 要求 有几件事我们不想在以下优先级进行测试: 这些来源是否有效,因此是“可编译的” 对于包,关于某个数据库,它们会编译吗 代码质量:我们是否存在代码缺陷,如重复、过于复杂的方法或其他违反已定义规则的行为 而且 工具必须无头运行(命令行、a

我们使用Hudson和Maven构建软件。我们有C#、java和最后但并非最不重要的PL/SQL源代码(存储过程、包、DDL、crud)

对于C#和Java,我们进行单元测试和代码分析,但在将PL/SQL源发布到目标数据库之前,我们并不真正了解它们的运行状况

要求 有几件事我们不想在以下优先级进行测试:

  • 这些来源是否有效,因此是“可编译的”
  • 对于包,关于某个数据库,它们会编译吗
  • 代码质量:我们是否存在代码缺陷,如重复、过于复杂的方法或其他违反已定义规则的行为
  • 而且

    • 工具必须无头运行(命令行、ant等)
    • 我们希望在部分代码基础上进行分析(仅更改源代码)
    工具 我们做了一些研究,发现以下工具可能会有帮助:

    • 似乎是一个掌握“任何东西”信息的服务器。找不到将以可读格式导出的控制台版本
    • 专业版据说包含一种称为Xpert的东西,它根据代码库验证一组规则
    • +:使用Toad for Oracle以声纳方式显示代码运行状况。这用于浏览代码库的当前状态
    • 对源代码库进行了相当全面的分析。命令行可用吗
    • 检测克隆。但也通过命令行
    • 似乎专注于安全问题。但也许它是可扩展的
    到目前为止,甲骨文的蟾蜍和声纳似乎是一个优雅的解决方案。但也许我们错过了什么

    有什么想法吗?其他产品?经验

    与此有关的问题:

    我们的方法是将每个数据库对象(表、视图、函数、包、存储过程等)保存在自己的文件中,并受源代码控制,并且有一个集成服务器(,等等)在检查
    user\u errors
    system表中的编译错误之前,每晚从源代码处构建数据库,在其中删除并重新创建模式。这可以让您知道何时有人在构建中引入了编译错误

    下一步是使用类似的方法将单元测试添加到PL/SQL代码中,并将它们添加到夜间构建任务中。对我们来说,这涉及到样本测试数据集(也在源代码控制下),它允许我们将数据库置于“已知状态”进行测试

    我还没有发现任何东西对以上任何一项有很大帮助,所以它主要是Ant任务、自定义shell脚本和向导的集合,它们基本上对空数据库应用所需的DDL,并使用
    DBMS\u实用程序。COMPILE\u SCHEMA()
    编译模式。您可以在以后添加更多有趣的内容,比如在源代码管理中,对未能编译或测试失败的对象进行回溯,并发出“责备邮件”


    我真的很想看看是否有其他人有更好的方法,或者是否有现成的产品可以为我做到这一点

    我认为这个博客描述了需要的过程:

    请检查并告诉我您对此的看法。

    < P>我们是任意可定制工具的基础。它有一个PL/SQL前端,可用于构建任意源代码质量检查。是的,它有一个命令行版本

    有多种基于DMS的方法可用于检查质量:

    • 格式化程序-清理布局。副作用:对合法PL/SQL语法进行静态检查
    • 源代码搜索引擎-支持快速搜索索引源代码库。计算Halstead和圈度量作为设置索引的副作用
    • CloneDR-查找和报告重复的PL/SQL代码
    • 测试覆盖率-确定测试(特别测试、单元测试或功能测试)未执行的部分PL/SQL代码

    所有这些都有命令行版本。

    太好了,汉诺!谢谢你发布链接。