• About
  • Privacy Policy
  • Disclaimer
  • Contact
TomorrowPosT
  • Home
  • Computers
    • Gaming
  • Gear
    • Apple
    • Mobile
  • Microsoft
    • Software & Apps
  • Review
    • Security
  • Tech for Business
  • Tech News
  • News
  • Termini e condizioni
No Result
View All Result
  • Home
  • Computers
    • Gaming
  • Gear
    • Apple
    • Mobile
  • Microsoft
    • Software & Apps
  • Review
    • Security
  • Tech for Business
  • Tech News
  • News
  • Termini e condizioni
No Result
View All Result
TomorrowPost
No Result
View All Result

Trasformazione automatica del codice con openRewrite

Michele by Michele
10/05/2025
Home Software & Apps
Condividi su FacebookCondividi su WhatsappCondividi su Twitter


Sfide manutenzione/refactoring del codice

Come per la maggior parte dei problemi nel mondo degli affari, la sfida con il mantenimento del codice è ridurre al minimo i costi e massimizzare i benefici per un certo periodo di tempo. Per la manutenzione del software program, i costi e i benefici ruotano in gran parte attorno a due cose: la quantità e la qualità del codice sia vecchio che nuovo.

Quantità

Sonarqube suggerisce che la nostra organizzazione mantenga almeno 80 milioni di righe di codice. È molto, soprattutto se rimaniamo aggiornati con patch di sicurezza e aggiornamenti rapidi delle librerie.

Qualità

In ambienti frenetici, in cui spesso ci troviamo, da cui proveni un sacco di modifiche al codice:

  1. Copia di ciò che vedi, dal codice nelle vicinanze o da luoghi come StackOverflow.
  2. Conoscenza che può essere applicata rapidamente.

Questi tipicamente si riducono alle decisioni prese dai singoli programmatori. Certo, questo viene fornito con professional e contro. Questo submit non ha lo scopo di suggerire che i contributi umani non sono estremamente vantaggiosi! Discuterò alcuni benefici e negativi del refactoring automatico e perché ci stiamo muovendo Farfallail nostro attuale strumento per il refactoring automatizzato, a OpenRewrite.

Vantaggi e costi di refactoring automatizzato

Quando pensiamo all’automazione, in genere pensiamo ai benefici, ed è qui che inizierò. Alcuni includono:

  • Se una ricetta esiste e funziona perfettamente, il costo umano è quasi 0, soprattutto se hai un modo semplice per applicare ricette su larga scala. Naturalmente, questo risparmio sui costi umani è l’ovvio ed enorme vantaggio.
  • Facile migrazione in librerie/sample/ecc. Porta patch di sicurezza, miglioramenti delle prestazioni e costi di manutenzione inferiori.
  • Un cambiamento automatizzato può essere educativo. Speriamo che troviamo ancora il tempo per leggere a fondo la documentazione, ma spesso non lo facciamo! Vedendo tuo Il codice refactorato dovrebbe essere educativo e dovrebbe aiutare con i costi di sviluppo futuri.

Ci sono costi per il refactoring automatizzato. Metterò in evidenza:

  • Se una ricetta non esiste, OpenRewrite non è privo di costi. Come per tutto il software program, il costo della creazione di una ricetta dovrà essere giustificato dal suo vantaggio. Questi costi possono diventare sostanziali se proviamo a muoverci verso una modifica del codice che non viene esaminata dagli umani.
  • OpenRewrite e AI ti premiano se si attacca linguaggi di programmazione, biblioteche, strumenti, ecc. A volte è giustificato che andare contro la norma. Advert esempio, le fasi di ricerca iniziale di Raptor 4 hanno esaminato altre pile tecnologiche oltre a Spring e Jax-RS. Alcuni obiettivi includevano il miglioramento delle prestazioni. Uno dei motivi per cui quelle altre opzioni sono state respinte è che non avevano supporto nello strumento di refactoring automatizzato di Raptor. Decisioni come questa possono avere un grande impatto su un’organizzazione più ampia.
  • Possibile perdita di “Evoluzione del design”. Credo in I “buoni programmatori sono pigri”e parte di quella pigrizia sta evitando il dolore che si supera per mantenere aggiornato il software program. Questa pigrizia serve a evolvere il software program in modo che possa essere facilmente aggiornato. Se togli il dolore, togli uno dei principali incentivi per farlo.

Quello che abbiamo usato: Butterfly

‘Butterfly’ è un sistema in due parti. La sua interfaccia di comando open supply (CLI), ufficialmente denominata “Butterfly”, modifica i file. Esiste anche uno strumento di trasformazione ospitato chiamato Butterfly, che può essere utilizzato per eseguire trasformazioni di farfalla sui repository di GitHub.

Questo submit si concentra sulla sostituzione della CLI e della sua API di estensione con OpenRewrite. C’è uno strumento di gestione delle modifiche su larga scala (LSCM) a propulsione aperta Moderneche non è gratuito.

Dove stiamo andando: OpenRewrite

Perché stiamo passando a OpenRewrite?

  • Adottato da progetti open supply che utilizziamo (primavera, java, ecc.).
  • Mantenuto da un’azienda, Moderne.
  • Alberi semantici senza perdita (simile agli alberi di sintassi astratti), che consentono la trasformazione simile al compilatore. Questi sono molto più potenti degli strumenti come la sostituzione dell’espressione regolare.
  • Modello di visitatore. La modifica dell’albero avviene principalmente visitando i membri dell’albero.
  • Stanno monitorando l’intelligenza artificiale per vedere come può essere sfruttata per la trasformazione del codice.

Siamo ancora all’inizio del viaggio con OpenRewrite. Mentre è facile da usare ricette esistenti, crearne nuove può essere complicato.

Che dire dell’intelligenza artificiale?

Se non stai indagando sull’intelligenza artificiale, sicuramente dovresti esserlo. Se l’IA può prevedere quale codice dovrebbe essere creato per una nuova funzionalità, dovrebbe certamente essere utile nella trasformazione del codice, il che è probabilmente più facile della creazione.

La nostra organizzazione ha iniziato il viaggio di incorporare l’IA nel suo set di strumenti. Monitoreremo come strumenti come OpenRewrite e AI si accumulano l’un l’altro. In story nota, stiamo studiando usando AI per creare ricette OpenRewrite.

Come abbiamo usato OpenRewrite

Esecuzione manuale di ricette contro un singolo progetto software program.

Ci sono stati più usi di OpenRewrite contro un singolo progetto software program. Vengo dal staff di JVM Framework, quindi il nostro utilizzo ha comportato il refactoring delle biblioteche Java. Di seguito puoi trovare alcuni esempi di quello:

  • JUnit 4 a JUnit 5 JAX-RS Refactoring. I commenti discutono alcune modifiche impressionanti. Si noti che ci sono più commit. Più sul perché period necessario in seguito.
  • Bella Word di rilascio di GitHub Refactoring. Questo è un PR banale, ma essere in grado di farlo su larga scala a basso costo aiuta gli argomenti basati sui costi quando il valore non è ampiamente concordato.
  • Esecuzione di aggiornamenti PRINGBOOT_3_2, CommonStaticanalysis, UpgradeTojava17 e MigratehamCrestToassertj Ricette su un progetto di organizzazione più ampio con un enorme 800K linee di codice ha prodotto ~ 200k linee modificate che abbracciano ~ file 4K con un risparmio di tempo stimato di ~ 8 giorni. Credo che sia piuttosto sottovalutato dei risparmi!
  • JUnit4 -> JUnit5 Refactoring. Risparmio stimato: 1d 23h 31m.
  • Frequent refactoring di analisi statica. Risparmio stimato: 3d 21h 29m. Se sei stanco di soddisfare manualmente il sonar, allora questa ricetta potrebbe essere per te! Sfortunatamente, questi devono essere chiusi in blocco a causa di un problema (non stiamo cercando di nascondere nulla!). Puoi leggerlo Qui.

Ancora una volta, penso che OpenRewrite sottovaluti significativamente alcuni di questi risparmi. Il tempo di esecuzione è stato di ~ 20 minuti. Quello period il momento del laptop, non il mio!

Avvertenza: è facile solo quando è facile

Quando esiste una ricetta e non ha bug, tutto è fantastico! Quando non lo fa, hai più domande. I due principali sono:

  1. Esiste un LST/parser? Advert esempio, OpenRewrite non ha parser per il codice C ++, quindi non c’è modo di creare una ricetta per quella lingua.
  2. Se c’è un LST/parser, quanto è difficile creare una ricetta? Ci sono un sacco di modi interessanti e semplici per comporre ricette esistenti; Tuttavia, quando devi lavorare direttamente con un LST, può essere impegnativo.

In breve, non è sempre la risposta. Il buon sviluppo del codice e la gestione svolgono ancora un ruolo importante nel ridurre al minimo i costi a lungo termine.

Intervento manuale

Finora, le trasformazioni più complicate hanno richiesto la pulizia umana. Fortunatamente, quelli erano in casi di check e i problemi erano evidenti in una construct fallita. Fino a quando non saremo più sofisticati con il rilevamento di cambiamenti di rottura, ti preghiamo di capire che possiedi i cambiamenti, anche se arrivano tramite uno strumento come OpenRewrite.

Problemi di triaging

OpenRewrite non ha una registrazione dell’applicazione come il normale software program Java. Inoltre, non produce sempre errori in modi che potresti aspettarti.

Per aiutare con questi problemi, abbiamo una pagina di consigli La nostra documentazione interna openRewrite.

Conclusione

Spero che tu sia entusiasta dei nuovi strumenti in arrivo che ti aiuteranno a massimizzare il valore.

Risorsa

Tags: automaticacodicecondelopenRewritetrasformazione
Michele

Michele

Next Post

NocTua rilascia NH-D15 G2 OFFSET specifico LGA1851 barre di montaggio per le prestazioni di raffreddamento migliorate

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Recommended.

Revisione della scatola di attrezzatura Plano Stowaway

Revisione della scatola di attrezzatura Plano Stowaway

19/03/2025

LM Tek prende il controllo di EKWB

03/03/2025

Trending.

Sistemi distribuiti 101

Sistemi distribuiti 101

18/04/2025
Come spostare gli acquisti digitali tra due ID

iPhone 16 viene finalmente lanciato in Indonesia dopo un lungo divieto

14/04/2025
Pacchetti npm canaglia imitare l’API bot telegramma per piantare backoors ssh su sistemi Linux

Pacchetti npm canaglia imitare l’API bot telegramma per piantare backoors ssh su sistemi Linux

20/04/2025
Starcraft 2 hacker che costringono i giocatori a guardare video di tiro

Starcraft 2 hacker che costringono i giocatori a guardare video di tiro

23/04/2025
Distribuzione di piattaforme di intelligenza artificiale nell’istruzione superiore per risultati migliori

Distribuzione di piattaforme di intelligenza artificiale nell’istruzione superiore per risultati migliori

24/04/2025

TomorrowPost

Welcome to Tomorrow Post – your trusted source for the latest in computers, gaming, tech gear, Microsoft, software, cybersecurity, and much more! Our mission is simple: to provide technology enthusiasts, professionals, and business leaders with accurate, insightful, and up-to-date information that helps them navigate the ever-evolving world of technology.

Categorie

  • Apple
  • Computers
  • Gaming
  • Gear
  • Microsoft
  • Mobile
  • News
  • Review
  • Security
  • Software & Apps
  • Tech for Business
  • Tech News

Recent News

NocTua rilascia NH-D15 G2 OFFSET specifico LGA1851 barre di montaggio per le prestazioni di raffreddamento migliorate

10/05/2025
Trasformazione automatica del codice con openRewrite

Trasformazione automatica del codice con openRewrite

10/05/2025
  • About
  • Privacy Policy
  • Disclaimer
  • Contact

© 2025- https://tomorrowpost.net- All Rights Reserved

No Result
View All Result
  • Home
  • Computers
    • Gaming
  • Gear
    • Apple
    • Mobile
  • Microsoft
    • Software & Apps
  • Review
    • Security
  • Tech for Business
  • Tech News
  • News
  • Termini e condizioni

© 2025- https://tomorrowpost.net- All Rights Reserved