9 回答
对于 T-SQL,Microsoft 拥有 VS Team Suite 的数据库版本(尽管我相信它现在在 dev SKU 中)。此链接讨论为 T-SQL 编写自己的静态代码分析规则:http: //blogs.msdn.com/gertd/archive/2009/01/01/creating-t-sql-static-code-analysis-rules。 aspx
Oracle 内置了一些鲜为人知的东西。
在 10g Release 2 或更高版本中试试这个:
ALTER SESSION PLSQL_WARNINGS = 'ENABLE:ALL';
然后编译你的 PL/SQL 包(不是匿名块)。
Toad 具有CodeXpert实用程序来静态检查您的 PL/SQL 代码。
该实用程序可以扫描文件或直接连接到 Oracle 数据库。据我所见,仅适用于 Windows。
试用免费的Sql Code Guard。它为 T-Sql 代码提供快速和全面的静态分析,显示代码复杂性和对象依赖关系
对于 PL/SQL,Toad CodeXpert 可以使用 Sonar 进行扩展,Sonar是一种通过插件管理代码质量的开源工具。
我想也可以为 T-SQL 编写一个插件。
我所知道的最接近的是SQL Server Management Studio中可用的估计和实际查询计划功能,但我猜其他SQL 引擎也有类似的功能。
我们的SD 源代码搜索引擎是一种工具,可通过源代码文件的标记(标识符、数字等)对源代码文件进行预索引,从而有效地以多种计算机语言(包括 PL/SQL)交互式搜索大型源代码库。作为预索引步骤的副作用,它为每个文件计算标准指标:SLOC、Cyclomatic、Halstead ……并生成报告。有关示例,请参见该站点。
我们的SD CloneDR是一种用于分析大型代码库以查找冗余代码的工具。我们已经将它应用于 PL/SQL,并且已经看到了 45% 的代码涉及克隆。YMMV。CloneDR 适用于多种语言;请参阅站点以了解在其他一些语言上运行的示例克隆检测。
编辑 2010 年 10 月 4 日:
我们的源代码搜索引擎旨在实现对混合语言的大型代码进行非常快速的搜索。它通过对源代码进行预索引来成功。作为索引步骤的副作用,它计算各种指标,包括复杂性的 Cyclomatic 和 Halstead 度量。
刚刚补充:不是静态分析工具,而是对软件质量感兴趣的人普遍感兴趣的工具:我们的TestCoverage for PLSQL 存储过程。
不是我知道的。关于 PL/SQL,由于 Oracle 没有公开太多他们的 PL/SQL 编译引擎,因此很难找到工具支持。
我能做的最多的是查询数据字典来做一些事情,比如映射包依赖关系。
作为 T-SQL 帖子的后续;VS2010和VS2008数据库开发版自带静态分析规则。这些是用户可扩展的,即您可以用.net 语言编写自己的分析规则。开源项目 Neznayka 带有一套初始的 22 条规则,并为您开始贡献自己的规则提供了一个有用的基础。
诚然,您必须购买 Visual Studio 并准备使用 VS 项目开发 db 代码,但最近发布的 SSDT 作为 SSMS 插件提出了微软可能的前景,如果它有这样做的意愿的话,允许将用户编写的规则分发到使用 MS SQL 项目“免费”开发数据库代码的环境。
Neznayka的链接。
或者在网上搜索。