Inicio > ADF / Java > ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Analizador)

ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Analizador)

ADF tips

En un post anterior explicamos cómo activar las reglas de auditoría que JDeveloper ya lleva por defecto. En este post explicaremos cómo crear nuestra propia regla de auditoría. JDeveloper nos da una herramienta para poder ampliar e implementar nuestras propias reglas de auditoria, mediante lo que denomina extensiones. Lo primero que haremos será instalar la en nuestro JDeveloper 12c las librerías para poder generar extensiones, realizaremos los siguientes pasos:

Iremos a check for updates:

check

Después instalaremos Extension SDK  y tendremos que reiniciar JDeveloper.

extension

Una vez tengamos Extension SDK instalado comenzaremos a crear nuestras propias reglas, sobre la aplicación que creamos en el post anterior.

Lo primero será crear una aplicación tipo Extension Application:

apExtension

Esta aplicación por ejemplo la llamaremos AuditReglas, Se nos creara una aplicación como vemos en la siguiente imagen:

apliAudit

Aquí podemos ver los dos ficheros de configuración de la extensión MANIFEST.MF y extension.xml, editaremos el fichero extension.xml y iremos a overview desde aquí se ven los dos ficheros.

Lo primero que haremos será  ir a la pestaña dependencias y añadiremos las dependencias necesarias para nuestra extensión:

  1. oracle.ide
  2. oracle.jdeveloper
  3. oracle.ide.audit
  4. oracle.ide.audit.core
  5. oracle.ide.xmlef
  6. oracle.javatools
  7. oracle.javatools-nodeps
  8. oracle.jdeveloper.properties

Nos quedarán las dependencias como se ve en la imagen:

dependencias

 

El paso siguiente será definir nuestra regla en el fichero  extension.xml en la pestaña Hooks, aquí iremos informando la configuración de nuestra regla hasta tener esto en el extension.xml:

<extension id="com.avanttic.extension.auditreglas" version="1.0.0" esdk-version="2.0" rsbundle-class="com.avanttic.extension.auditreglas.AuditReglas" xmlns="http://jcp.org/jsr/198/extension-manifest">
 <name>${EXTENSION_NAME}</name>
 <owner>${EXTENSION_OWNER}</owner>
 <trigger-hooks xmlns="http://xmlns.oracle.com/ide/extension">
 <!-- TODO Declare triggering functionality provided by extension: com.avanttic.extension.auditreglas -->
 <triggers>
   <audit-hook id="com.avanttic.extension.auditreglas">
    <trigger>
      <technology>Java</technology>
    </trigger>
    <category-definition id="AuditAvanttic"/>
    <category-definition id="ReglaJava">
       <category>AuditAvanttic</category>
    </category-definition>
    <rule-definition id="system-print">
      <category>ReglaJava</category>
      <enabled>true</enabled>
      <severity>error</severity>
    </rule-definition>
    <analyzer-definition>
        <analyzer-class>com.avanttic.extension.auditreglas.analizers.java.JavaAnalizerImpl</analyzer-class>
    </analyzer-definition>
   </audit-hook>
 </triggers>
 </trigger-hooks>
 <hooks>
 <!-- TODO Declare functionality provided by extension: com.avanttic.extension.auditreglas -->
 </hooks>
</extension>

Explicación de los tags:

  • technology: Definimos nuestra regla para la tecnologia java.
  • category-definition: Este tag que puede anidarse será como se mostrará nuestra regla en Tools/preferences/audit.
  • rule-definition: Definición de la regla en este caso estará en la categoría ReglasJava, estará activa y nos dará un mensaje de error. Y se llamará system-print.
  • analyzer-definition: Define una clase java que extenderá oracle.jdeveloper.audit.analyzer.Analyzer, y servirá para analizar nuestro código.

 

Después crearemos la clase java y la mapearemos con nuestra regla system-print.

package com.avanttic.extension.auditreglas.analizers.java;

import oracle.javatools.parser.java.v2.model.statement.SourceExpressionStatement;

import oracle.jdeveloper.audit.analyzer.Analyzer;
import oracle.jdeveloper.audit.analyzer.AuditContext;
import oracle.jdeveloper.audit.analyzer.Rule;
import oracle.jdeveloper.audit.extension.ExtensionResource;

public class JavaAnalizerImpl extends Analyzer {
@ExtensionResource("com.avanttic.extension.auditreglas.system-print")
private Rule systemPrint;

public void enter(AuditContext context,Object o) {
System.out.println("enter : "+o.getClass());
}
public void exit(AuditContext context,SourceExpressionStatement stmt) {
String metodo=stmt.getText();
if (metodo.contains("System.out.print")) {
context.report(systemPrint);
}
}
}
  • @ExtensionResource: Con está anotación mapearemos nuestra clase java con nuestra regla system-print.
    • Id audit-hook=com.avanttic.extension.auditreglas, ID regla: system-print.
  • private Rule systemPrint: Constante que pasaremos al report cuando se cumpla esta regla.
  • exit: Metodo donde implementamos el código que nos buscará si se cumple la regla.

Fichero bundle de nuestra extensión tendrá los textos que se verán en tools/preferences/audit y el mensaje que se nos mostrará al cumplir la regla nuestro código:


# Translatable resources for extension com.avanttic.extension.auditreglas

EXTENSION_NAME=ExtensionAvanttic
EXTENSION_OWNER=avanttic

AuditAvanttic.label=Auditoria Avanttic
ReglaJava.label=Reglas Java

system-print.label=Regla system print
system-print.description=Regla system print
system-print.message=usando pritln

Una vez hechos estos pasos ya podemos probar nuestra regla lo primero será generar  el deploy de la aplicación:

deploy

 

Una vez lo tengamos generado ejecutamos la aplicación esto hará que se nos abra otra instancia del jdeveloper y en ella tendremos instalada nuestra regla y podremos probarla en el proyecto que queramos.

ejecutar

 

Ejemplo de como se mostraria la regla en nuestro jdeveloper lo podemos ver en la siguiente imagen:

reglas

 

prueba

En conclusión hemos podido ver cómo fácilmente podemos crear nuestras propias reglas de codificación, para tener un código de mejor calidad y que cumpla las especificaciones de QA de nuestra empresa.

Categorías:ADF / Java Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: