mercoledì 3 ottobre 2012

JavaOne 2012: analisi statica del codice personalizzato


Sono tornato alla Hilton (Continental Ballroom 4) a partecipare Jan Lahoda 's ( Oracle / NetBeans) Birds-of-a-Feather presentazione "Analisi statica di codice personalizzato." In precedenza ho bloggato su un sottoinsieme delle funzionalità di cui Lahoda nel post Creazione di un NetBeans 7,1 suggerimento personalizzato . In questo post, ho guardato a scrivere suggerimenti personalizzati per NetBeans usando il linguaggio personalizzato refactoring dichiarativo che Lahoda discusso nella sua presentazione.
Lahoda ha spiegato che il Custom linguaggio dichiarativo refactoring è stata fondata nel 2000 per "migliorare IDE e gli sviluppatori modo in cui si sviluppano." NetBeans 6.0  ha adottato il proprio modello di scrittura nel 2006 ed è stato ripreso per NetBeans 7,1 con Jackpot Progetto 3,0 . Si tratta di un AST personalizzata basata su Java come DSL linguaggio che "permette di definire refactoring (quasi) dichiarativo". Può essere utilizzato per "verificare la presenza di anti-pattern" e di "determinare quanti clienti chiamare un metodo particolare per il contesto specificato."
Jackpot può essere eseguito al di fuori del NetBeans IDE sulla riga di comando utilizzando l' attrezzo Standalone Jackpot . Lahoda ha dichiarato che questo strumento standalone basato su riga di comando può anche applicare avvertimenti NetBeans.
Lahoda avuto diverse diapositive riguardanti le opzioni e la sintassi per specificare le regole statiche di analisi del codice . Le informazioni contenute in molte di queste slide è disponibile nella pagina Wiki JavaDeclarativeHintsFormat che Lahoda riferimento. Lahoda anche consultati online Jackpot 3,0 Esempi.
Lahoda fornito un modello di come il linguaggio dichiarativo suggerimenti funziona:

1.<source-pattern> :: <Condizioni>
2.=> <target-pattern> :: <Condizioni>
3.=> <target-pattern> :: <Condizioni>
4.;;
Lahoda ha dichiarato che è possibile inserire "un numero qualsiasi di tali norme in un file" e poi inserire il. Suggerimento file in META-INF/upgrade. Vedi Geertjan Wielenga 's post Oh No Vector! su questo particolare.
Patterns erano un altro Lahoda argomento trattato nella sua presentazione. Aveva una pallottola affermando che i modelli possono essere applicati a "espressioni Java, istruzioni, classi e metodi." Ha spiegato il significato di $, che di fronte a un modello significa sostituzione di una cosa e con uno alla fine significa più istanze di quella cosa. Ecco le regole che utilizzano $ per i modelli che ha mostrato la sua slitta:
DichiarazioneDichiarazioni $ $ $ dichiarazione
0 o 1if ($ cond) $ allora, altrimenti $ else $
ModificatoriTipo mods $ $ $ $ $ variableName;
Le catture multipletry {} $ $ catture finally {}
Lahoda coperti condizioni. Egli ha dichiarato che ci sono tre tipi di condizioni: lingua (instanceof, in caso contrario), standard (predefinita), e personalizzato. Un risultato condizione può essere negato (!) && E lavora sui risultati condizione.
Lahoda esempio, di utilizzare instanceof è indicato accanto (restituisce true se l'espressione associato a $ variabile è di tipo <tipo>):

1.variabile $ instanceof <tipo>
La parola chiave in caso contrario viene utilizzato quando designare correzioni ed è vero quando nessun altro fix è disponibile per una particolare regola.
Lahoda ha dichiarato che "come chiamate di metodo" sono della forma:

1.hasModifier ($ variabile, PRIVATO)
Lahoda concluso ricordando il pubblico delle situazioni in cui questo approccio personalizzato analisi statica del codice potrebbero essere utili:
  1. NetBeans refactoring personalizzato per controllare antipatterns
  2. Controllo per le violazioni durante continua costruzione
  3. La produzione standard di avvisi NetBeans
Quando ho scritto il mio post Creazione di un NetBeans 7,1 Suggerimento personalizzata , una delle più grandi sfide è stato trovare la documentazione di fuori della documentazione sparse NetBeans linea per quanto riguarda l'uso della lingua di regole personalizzate. Presentazione Lahoda e le pagine Wiki più recenti e altra documentazione è stato uno dei principali responsabili negli ultimi mesi hanno contribuito a ridurre questo ostacolo. Questa è una delle molte cose che ho visto o sentito di più su a JavaOne 2012 che spero di blog in futuro.


Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.