Sviluppo > Strumenti > Verifiche > Verifica sorgenti 

Questa funzione è riservata (ed utile) a chi sviluppa.
Il lancio in batch è possibile.

Lo scopo di questo programma è quello di rilevare un certo numero di errori di programmazione.
Agendo quindi a monte della messa in produzione, si migliora la qualità.

Questo programma permette di lanciare più serie di controlli in un dossier:

- verifica di sotto-programmi e funzioni: riguarda principalmente la chiamata di sotto-programmi nei sorgenti (esistenza, numero e coerenza dei parametri...).
- verifica delle classi [F] e [M] : permette principalmente di verificare l'esistenza di tabelle, videate e campi nei sorgenti.
- altre verifiche: permette diversi controlli nei sorgenti.

I controlli sono suddivisi in 2 parti:

- Gli errori: Possono generare un arresto del prodotto.
- Le anomalie: Rilevano un non rispetto delle norme o una mancanza di precisione che può condurre ad errori durante l'esecuzione del programma.

Il programma genera due file di traccia (uno per gli errori ed uno per le anomalie).
Il file delle anomalie ha lo stesso nome di quello degli errori con il suffisso W (Warning).

Gestione videata

La videata presenta il dossier corrente.

Videata di inserimento

Presentazione

Inserimento dei parametri desiderati

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Blocco numero 1

scelta del dossier da elaborare.
Per questioni di performance, si consiglia di elaborare il dossier corrente.

Tipo di controllo

  • Sotto-programmi e funzioni (campo VERIFCALL)
  • Classi [F] e [M] (campo VERIFVAR)

verifica delle classi [F] e [M].

Questa scelta permette principalmente di verificare l'esistenza di tabelle, videate e campi nei sorgenti.

  • Altro (campo VERIFAUT)

altre verifiche.

Questa scelta permette diversi controlli nei sorgenti.

Criteri

  • Sorgente/i (campo NOMSRC)

selezione di un programma.

Selezione di tutti con *, di uno solo indicandone il nome o di molteplici con inizio*.

  • Modulo (campo CHXMODULE)

scelta di un modulo (via una videata elenco)
Verranno controllati solo i programmi di questo modulo

  • campo LIBMODULE

 

  • Errore (campo CHXERREUR)

scelta di un errore particolare (via una videata elenco).
Questa selezione è possibile se si richiede un solo controllo.

  • campo NUMERR

 

Ord

  • Modulo (campo PARMODULE)

Concatenamento per modulo
Ciò permette di ottenere gli errori (ed anomalie) ordinati per modulo.

Traccia

  • Su client (campo TRACE)

File di traccia.

E' possibile registrarlo direttamente sulla postazione client (casella da contrassegnare).
Il suo nome è in questo caso modificabile.

Chiudi

 

Elenco errori ed anomalie ricercate

verifica di sotto-programmi e funzioni.

Errori cercati:

DBGAFF trovato.
Programma inesistente.
Sotto-programma (o funzione) inesistente.
Errore chiamata con GOSUB.
Variabile globale VAR inesistente.
Parametro di tipo differente su chiamata di Sotto-programma (o funzione).
Numero di parametri differente su chiamata di Sotto-programma (o funzione).
Goto ad una etichetta situata in un altro programma.
Chiamata di un'etichetta con Call.
Etichetta inesistente.

Anomalie cercate:

Funzione con un tipo di argomento non presente nel dizionario ASUBPROG.
Funzione con un tipo di argomento (di End) nel dizionario differente da quello del programma.
Sotto-programma (o funzione) con argomento n° N non dichiarato.
Variabile globale VAR già dichiarata con tipo differente.
Sotto-programma (o funzione) con una descrizione vuota (documentazione).
Parametro [=VALEUR] di tipo differente su chiamata di Sotto-programma (o funzione).
Parametro di tipo differente tra dizionario e dichiarazione del sotto-programma (o funzione).
Parametro con un passaggio per indirizzo/valore differente tra dizionario e dichiarazione del sotto-programma. (o funzione).
Numero di parametri differente tra dizionario e dichiarazione del sotto-programma (o funzione).
Sotto-programma (o funzione) con argomento n° N di nome differente in definizione del tipo.


Verifica delle classi [F] e [M].

Errori cercati:

Sorgente non presente nel dizionario dei programmi.
Variabile videata inesistente [M:ABV]CHP
Variabile tabella inesistente [F:ABV]CHP
Variabile inesistente [ABV]CHP nelle tabelle LNK
Tabella non trovata
Lunghezza abbreviazione troppo lunga (> 4)

Anomalie cercate:

Variabile inesistente [G:ABV]CHP

Altre verifiche

Errori cercati:

Sotto-programma (o funzione) terminato e For senza Next
Sotto-programma (o funzione) terminato e If senza Endif
Sotto-programma (o funzione) terminato e Case senza Endcase
Sotto-programma (o funzione) terminato e While senza Wend
End trovato in un ciclo For [Read]
Return trovato in un ciclo For [Read]
Documentazione entry point inesistente.
   
Anomalie cercate:

Sotto-programma (o funzione) senza codice
Sotto-programma (o funzione) con un riquadro in parametro passato per valore
Return trovato in un Sotto-programma (o funzione)
Messaggio di errore impreciso, da completare con: "(" + [L]COMPTEUR - num$([L]STAT) + ")".
#@ è un'istruzione obsoleta
Istruzione evalue inutile su un dim di campo.

Tag per nascondere certi errori

Alcuni errori sono complessi da analizzare, altri corrispondono a dei casi particolari.
Per tali casi si hanno a disposizione dei tag (nei programmi) per nasconderli.
L'interesse è quello di non inquinare i rendi conti con 'falsi' errori ricorrenti.

L'obiettivo di questi tag, con un utilizzo generalizzato, non è quellio di nascondere tutti gli errori in alcuni CHECK.
E' invece quello di gestire i casi particolari.


modo di utilizzo:

Prima fase : Analizzare i sorgenti senza inserire dei tag.
Rilanciare la verifica tante volte quante necessarie per ottenere il numero più basso di errori.

Seconda fase: Inserire i tag desiderati per poi analizzare i sorgenti fino ad ottenere il risultato desiderato (nessun errore!).

Terza fase: Adattare i propri tag in funzione degli errori rilevati su altri programmi.
Ad esempio, un sorgente evidenziato come inutilizzato non dovrà più esserlo se un altro programma richiama uno dei suoi sotto-programmi.


precisazioni:

Il CHECK IGNORE_SOURCE è previsto generalmente per non controllare un sorgente in corso di sviluppo (troppi errori temporanei).
Il CHECK UNUSED_SOURCE è previsto per verificare che un sorgente non sia più utilizzato. Potrà essere allora eliminato in un secondo tempo.
I CHECK IGNORE_BEGIN e CHECK UNUSED_BEGIN sono concepiti per elaborare una parte di programma (fino al #CHECK ..._END).
Il CHECK IGNORE_WRSEQ serve a non analizzare le istruzioni Wrseq (caso dei sorgenti generatori).

Va privilegiato un CHECK UNUSED_SOURCE piuttosto che un UNUSED_BEGIN (subito all'inizio) su un programma:
Se un altro programma lo chiama (Call From), l'errore preciserà allora che il programma chiamato è evidenziato come non utilizzato.

Elenco dei differenti tag:

#CHECK FILE_DECLARE <file> [<abbrev>]
Per dichiarare una tabella che è stata aperta in un altro programma con un'abbreviazione non standard
Dichiarare una sola tabella per riga
Da mettere ad inizio riga (prima di quelle che utilizzano questa abbreviazione).

#CHECK MASK_DECLARE <videata> [<abbrev>]
Per dichiarare una videata che è stata aperta in un altro programma con un'abbreviazione non standard
Dichiarare una sola videata per riga
Da mettere ad inizio riga (prima di quelle che utilizzano questa abbreviazione).

#CHECK IGNORE_SOURCE
Per non analizzare un sorgente.
Da mettere ad inizio programma

#CHECK IGNORE_BEGIN
A partire da questa riga, le istruzioni successive non verranno analizzate.
Da mettere ad inizio riga (prima di quelle da non analizzare).

#CHECK IGNORE_END
Per arrestare il CHECK IGNORE BEGIN.
Da mettere ad inizio riga

#CHECK IGNORE_LINE
Per ignorare una singola istruzione.
Da mettere a fine riga come commento

#CHECK IGNORE_WRSEQ
A partire da questa riga, le righe contenenti un Wrseq verranno ignorate.
Da mettere ad inizio riga

#CHECK WRSEQ_END
Per arrestare il CHECK IGNORE_WRSEQ.
Da mettere ad inizio riga

#CHECK UNUSED_SOURCE
Per non analizzare un programma obsoleto.
Da mettere ad inizio riga del programma

#CHECK UNUSED_BEGIN
A partire da questa riga, le inztruzioni successive del programma non verranno mai analizzate.
Da mettere ad inizio riga (prima di quelle da non analizzare).

#CHECK UNUSED_END
Per arrestare il CHECK UNUSED BEGIN.
Da mettere ad inizio riga

#CHECK MIGRATE_SOURCE
Riconoscimento di un programma di migrazione. A partire da questa riga, alcuni controlli saranno ignorati.
Da mettere ad inizio riga (prima di quelle da non analizzare).
Errori nascosti da questo CHECK: n° 109

Job batch

Questa funzione può essere lanciata in batch. Il job standard AVERIFSRC è previsto per questo.

Messaggi di errore

Non esistono messaggi di errore ad eccezione di quelli generici.

Tabelle utilizzate

SEEREFERTTO Riferirsi alla documentazione di Implementazione