【问题标题】:PL/SQL pre-compile and Code Quality checks in an automated build environment? [closed]在自动构建环境中进行 PL/SQL 预编译和代码质量检查? [关闭]
【发布时间】:2011-03-02 03:35:45
【问题描述】:

我们使用 Hudson 和 Maven 构建软件。我们有 C#、java 和 last,但并非最不重要的 PL/SQL 源(sprocs、包、DDL、crud)

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

要求

我们不想在以下优先级中测试几件事:

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

还有,

  • 该工具必须无头运行(命令行、ant、...)
  • 我们想对部分代码库进行分析(仅限更改的源)

工具

我们做了一些研究,发现以下工具可能会有所帮助:

到目前为止,Toad for Oracle 和 Sonar 似乎是一个优雅的解决方案。但是我们可能在这里遗漏了什么吗?

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

关于 SO 的相关问题:

【问题讨论】:

    标签: oracle plsql continuous-integration build-automation code-analysis


    【解决方案1】:

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

    http://www.theserverlabs.com/blog/?p=435

    请检查并告诉我你的想法。

    【讨论】:

    • 太好了,汉诺!感谢您发布链接。
    【解决方案2】:

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

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

    我没有找到任何对上述任何内容有很大帮助的东西,所以它主要是 Ant 任务、自定义 shell 脚本和魔法的集合,它们基本上将所需的 DDL 应用于空数据库并使用 DBMS_UTILITY.COMPILE_SCHEMA() 来,嗯,编译架构。您可以稍后添加更多花哨的东西,例如回溯无法编译或测试失败的对象到源代码控制中的特定提交,并发出“责备邮件”。

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

    【讨论】:

      【解决方案3】:

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

      有多种基于 DMS 的PL/SQL COTS tools 可用于检查质量:

      • 格式化程序 - 清理布局。副作用:静态检查合法的 PL/SQL 语法
      • 源代码搜索引擎 - 可以快速搜索索引源代码库。计算 Halstead 和 Cyclomatic 指标作为设置索引的副作用。
      • CloneDR - 查找并报告重复的 PL/SQL 代码
      • 测试覆盖率 - 确定未由测试(即席、单元或功能测试)执行的部分 PL/SQL 代码

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多