PL / SQL pre-compilar y Controles de calidad de código en un entorno de compilación automatizado? [cerrado]


Construimos software usando Hudson y Maven. Tenemos C#, java y por último, pero no menos importante fuentes PL/SQL (sprocs, packages, DDL, crud)

Para C# y Java hacemos pruebas unitarias y análisis de código, pero realmente no conocemos el estado de nuestras fuentes PL/SQL antes de publicarlas en la base de datos de destino.

Requisitos

Hay un par de cosas que no queremos probar en la siguiente prioridad:

  1. ¿Son las fuentes válidas, por lo tanto "compilables"?
  2. Para paquetes, con respecto a cierta base de datos, ¿compilarían?
  3. Calidad del código: ¿Tenemos fallas de código como duplicados, métodos demasiado complejos u otras violaciones a un conjunto definido de reglas?

También,

  • la herramienta debe ejecutar head-less (commandline, ant,...)
  • queremos hacer análisis sobre una base de código parcial (solo fuentes cambiadas)

Herramientas

Hicimos un poco de investigación y encontramos las siguientes herramientas que podrían potencialmente ayuda:

Hasta ahora, Sapo para Oracle junto con Sonar parece ser una solución elegante. Pero puede ser que nos estamos perdiendo algo aquí?

¿Alguna idea? Otros productos? Experiencias?

Preguntas relacionadas sobre SO:

Author: Community, 2010-06-10

3 answers

Creo que este blog describe el proceso necesario:

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

Por favor, compruebe y hágame saber lo que piensa al respecto.

 6
Author: Hanno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-18 09:54:18

Nuestro enfoque es mantener cada objeto de base de datos (tablas, vistas, funciones, paquetes, sprocs, etc.) en su propio archivo bajo control de código fuente y tener un servidor de integración ( TeamCity, Hudson etc) hace una compilación nocturna de la base de datos - desde el origen - donde cae y recrea el esquema antes de comprobar si hay errores de compilación en la tabla del sistema user_errors. Esto le permite saber cuando alguien ha introducido errores de compilación en la compilación.

El siguiente paso es usar algo como PLUTO para agregar pruebas unitarias a su código PL/SQL y agregarlas a la tarea nightly build. Para nosotros, esto ha implicado tener conjuntos de datos de prueba de muestra (también bajo control de código fuente) que nos permiten obtener la base de datos a un "estado conocido" para los propósitos de prueba.

No he encontrado nada que nos ayude mucho con cualquiera de los anteriores, por lo que es principalmente una colección de tareas Ant, scripts de shell personalizados y magia, que básicamente aplican el DDL requerido a una base de datos vacía y usan DBMS_UTILITY.COMPILE_SCHEMA() para, compilar el esquema. Puede agregar más cosas elegantes más adelante, como objetos de rastreo de retroceso que no pueden compilar o fallar las pruebas a un submit específico en el control de código fuente, y emitir "blame mail".

Estaría realmente interesado en ver si alguien más tiene un mejor enfoque o si hay un producto listo para usar que hace esto por mí!

 4
Author: ninesided,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-13 10:49:52

Nuestro DMS Software Reengineering Toolkit es la base para herramientas personalizables arbitrarias. Tiene un front-end PL/SQL que se puede utilizar para construir controles de calidad de código fuente arbitrarios. Sí, tiene una versión de línea de comandos.

Hay una variedad de herramientas PL / SQL COTS basadas en DMS que podrían usarse para verificar la calidad:

  • Formatter - Limpia el diseño. Efecto secundario: comprobación estática de la sintaxis legal de PL/SQL
  • Motor de Búsqueda de Código fuente-habilita búsqueda rápida de la base de código fuente indexado. Calcula las métricas Halstead y Cyclomatic como un efecto secundario de la configuración del índice.
  • CloneDR-encuentra e informa código PL/SQL duplicado
  • Cobertura de prueba-determina parte del código PL/SQL no ejecutado por pruebas (pruebas ad hoc, unit o funcionales)

Todos estos tienen versiones de línea de comandos.

 2
Author: Ira Baxter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-06 14:50:08