CAST AIP - Execució d'una revisió del codi font

Usar els manuals disponibles a Documentació i manuals de CAST, dins els Cookbooks ‘Appplication qualification and version delivery’ i ‘Application Analysis Process with CAST AIP’.

Realitzar l’anàlisi del codi font

cast-summary

Cal tenir en compte que determinades tecnologies requereixen que es facin una extracció i posterior importació a l’eina per a ser analitzades. Per exemple en el cas de SAP (s’ha d’executar una transacció que genera un format que podrà ser analitzat per CAST), o el cas de l’anàlisi de la base de dades.

A continuació es descriuen els passos per extreure una base de dades Oracle

Extracció i anàlisi d’una base de dades Oracle

  1. Revisar els requisits previs en la màquina local:

    • Disposar de connectivitat i les dades de l’entorn de base de dades (nom, port, servei, usuari i password)
    • Disposar d’un JRE igual o superior al 5.0
    • Disposar dels següents lliurables copiats en una carpeta local: CASTDBDeliveryTool.jar, CASTDBExtractor.jar, RunWindowsExtractorAndDeliveryTool.bat (script per entorns Windows), RunUnixExtractorAndDeliveryTool.sh (script per entorns Unix)

    Podeu trobar aquests lliurables al arxiu comprimit: CAST Extractor BD.

  2. Configurar el script corresponent al sistema operatiu donant valors a:

    • El nom de la base de dades, el port i el nom del servei es configuren en el corresponent set. Per exemple: set url=jdbc:oracle: thin:@teamsgbd03:1521:O102 (Veure Step 1 del script)
    • Opcionalment es pot configurar el directori on desar els resultats. Per defecte els resultats de l’extracció es desen a la carpeta Results.
    • Configurar en el Step 2 el camp usuari. L’usuari ha de disposar dels permisos definits en l’annex.
    • Informar en el Step 3 la plataforma. Aquest camp indica la versió d’Oracle del servidor. Té un dels següents valors: Oracle11g, Oracle10g. Oracle9i, Oracle8. És sensible a majúscules i minúscules.
    • Informar en el Step 5 l’esquema a analitzar. Si es tracta de tota la instància es pot eliminar aquest paràmetre de tot el fitxer .bat. Si s’han d’extreure més d’un esquema es poden separar per comes.
  3. Verificar que l’usuari d’accés a la base de dades disposa de permisos sobre qualsevol diccionari. Per configurar l’usuari es pot connectar com a SYS i executar les següents sentències:

    grant connect to <DBUSER>
    SELECT ANY DICTIONARY right
    O bé donar d'alta els següents permisos:
    grant connect to <DBUSER>
    /
    grant select on dba_col_comments to <DBUSER>
    /
    grant select on dba_coll_types to <DBUSER>
    /
    grant select on dba_cons_columns to <DBUSER>
    /
    grant select on dba_constraints to <DBUSER>
    /
    grant select on dba_db_links to <DBUSER>
    /
    grant select on dba_dependencies to <DBUSER>
    /
    grant select on dba_ind_columns to <DBUSER>
    /
    grant select on dba_ind_expressions to <DBUSER>
    /
    grant select on dba_indexes to <DBUSER>
    /
    grant select on dba_mviews to <DBUSER>
    /
    grant select on dba_object_tables to <DBUSER>
    /
    grant select on dba_objects to <DBUSER>
    /
    grant select on dba_procedures to <DBUSER>
    /
    grant select on dba_sequences to <DBUSER>
    /
    grant select on dba_source to <DBUSER>
    /
    grant select on dba_synonyms to <DBUSER>
    /
    grant select on dba_tab_columns to <DBUSER>
    /
    grant select on dba_tables to <DBUSER>
    /
    grant select on dba_triggers to <DBUSER>
    /
    grant select on dba_types to <DBUSER>
    /
    grant select on dba_users to <DBUSER>
    /
    grant select on dba_views to <DBUSER>
    /
    grant select on sys.argument$ to <DBUSER>
    /
    grant select on sys.col$ to <DBUSER>
    /
    grant select on sys.coltype$ to <DBUSER>
    /
    grant select on sys.obj$ to <DBUSER>
    /
    grant select on sys.snap$ to <DBUSER>
    /
    grant select on sys.syn$ to <DBUSER>
    /
    grant select on sys.tab$ to <DBUSER>
    /
    grant select on sys.user$ to <DBUSER>
    /  
    
  4. Executar el .bat. Executar el .bat amb la contrasenya de l’entorn de base de dades

  5. Verificar la sortida del log de l’extracció

    En la carpeta Results es genera un fitxer log amb el nom output_NOM_ESQUEMA.log que s’ha d’obrir i validar que no dóna errors d’aquest estil en l’inici del log:

    2012-05-09 12:28:43.317 - Connected to: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.155.7.XXX)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=XXXX))) user: XXX_XXX_XX
    2012-05-09 12:28:43.379 - Vendor: Oracle
    2012-05-09 12:28:43.379 - Platform: Oracle10g
    2012-05-09 12:28:43.379 - Scanning server...
    2012-05-09 12:28:43.379 - Target file: .\RESULTATS\XXX_XXX_XXX\Results\XXX_XXX_XXX
    2012-05-09 12:28:43.379 - Vendor queries...
    2012-05-09 12:28:43.395 - SQL error: ORA-00942: la tabla o vista no existe
    2012-05-09 12:28:43.395 - Options:
    2012-05-09 12:28:43.395 - schema:
    2012-05-09 12:28:43.395 - XXX_XXX_XXX
    2012-05-09 12:28:43.395 - RDBMS.Name:
    2012-05-09 12:28:43.395 - Oracle Server
    2012-05-09 12:28:43.395 - platform.type:
    2012-05-09 12:28:43.395 - 2
    2012-05-09 12:28:43.410 - RDBMS.Version:
    2012-05-09 12:28:43.410 - 10.2.0.4.0
    2012-05-09 12:28:43.410 - Used Memory: 29439920
    2012-05-09 12:28:43.410 - Free Memory: 76859472
    2012-05-09 12:28:43.410 - Committed Memory: 106299392
    2012-05-09 12:28:43.410 - Available Memory: 863488080
    2012-05-09 12:28:43.410 - Maximum Memory: 892928000
    2012-05-09 12:28:43.410 - Layer: 0
    Validar el final del log, no hauria de sortir cap tipus d'errores o warnings. Exemple correcte:
    2012-04-23 11:18:34.472 - Server scanned in 121138 ms, 20654 rows extracted [rate: 170 rows/s]
    2012-04-23 11:18:34.472 - Used Memory: 73211816 bytes
    Exemple de final de log amb errors:
    2012-05-09 12:28:43.925 - Extraction terminated with 1 error(s), including 0 fatal error(s)
    2012-05-09 12:28:43.925 - Server scanned in 546 ms, 44 rows extracted [rate: 80 rows/s]
    2012-05-09 12:28:43.925 - Used Memory: 32764080 bytes
    2012-05-09 12:28:43.925 - Disconnected!
    

Definició d’exclusions a falsos positius

Si una vegada realitzat l’anàlisi es detecten falsos positius, es pot reanalitzar el codi, justificant com a exclusions determinades regles, pel que desapareixerien de l’anàlisi (no participen en cap indicador).

És estrany que s'afegeixin exclusions. Habitualment només tenen sentit quan s'usa una llibreria de tercers que no es pot modificar i imposa una forma de trebal que és detectada com a mala pràctica

De manera inicial les exclusions han d’estar creades a través del portal de CAST (Dashboard), per ser exportades i posteriorment importades en el nou entorn.

Generar l’informe de resultats

Generar l’informe de resultats amb l’eina Report Generator

CAST Report Generator és una eina que s’executa en local i accedeix a les dades dels anàlisi mitjançant protocol REST a la base de dades de CAST AIP. Cal que estiguin instal·lats, el programari CAST Report Generator en local i el servei CAST-RestAIP.war al tomcat de CAST. La versió 7.3 de CAST Report Generator és compatible amb instal·lacions CAST AIP 7.0 o posterior.

  1. Instal·lació CAST-RestAIP.war Al següent enllaç es descriu el procediment per instal•lar el servei CAST-RestAIP.war: Procediment instal·lació servei CAST-RestAIP.war

  2. Instal·lació CAST Report Generator. En el paquet estàndard d’instal·lació de CAST AIP hi ha l’instal·lador de CAST Report Generator. En qualsevol cas el paquet complet està disponible a: CAST Report Generator

  3. Generar l’informe d’anàlisi d’una aplicació usant la guia Guia d’ús de CAST Report Generator amb la plantilla:

    Plantilla d’informe d’anàlisi del codi font

  4. Incloure l’informe d’exclusions

Incloure exclusions a l’informe de resultats

  1. Descarregar l’arxiu comprimit: CAST Extractor BD-Part1 i CAST Extractor BD-Part 2
  2. Configurar els fitxer de propietats ‘exclusionsExport.properties’ amb les següents propietats:

  3. Nom de l’aplicació a analitzar

  4. Nom del fitxer de sortida (exportació). Es recomana que la ruta del fitxer no contingui espais en blanc.

  5. Paràmetres de connexió a la base de dades

  6. Executar el scripts d’exportació (exclusionsExport.bat o exclusionsExport.groovy) des de l’intèrpret de comandes.

La realització de l’exportació genera un fitxer CSV amb la ruta i nom especificats en el fitxer de configuració exclusionsExport.properties. Aquest fitxer CSV conté una entrada (linia) per cada exclusió obtinguda de l’aplicació que s’ha especificat amb el següent contingut:

    <esquema_central>,<aplicació>,<nom_objecte>,<id_mètrica>,<justificació>

Incloure el fitxer csv en l’informe de resultats.