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:
Dichiarazione | Dichiarazioni $ $ $ dichiarazione |
0 o 1 | if ($ cond) $ allora, altrimenti $ else $ |
Modificatori | Tipo mods $ $ $ $ $ variableName; |
Le catture multiple | try {} $ $ 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:
- NetBeans refactoring personalizzato per controllare antipatterns
- Controllo per le violazioni durante continua costruzione
- 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.