Amazon CodeGuru (anteprima)
Analisi del codice automatizzata
Rilevamento delle linee di codice più dispendiose
Istruzione basata su decenni di esperienza e competenze
I modelli di machine learning di CodeGuru sono istruiti sui codebase di Amazon, che comprendono centinaia di migliaia di progetti interni, nonché su oltre 10 mila progetti open source su GitHub. Decine di migliaia di sviluppatori Amazon hanno contribuito all'istruzione di CodeGuru, in base a decenni di esperienza nell'analisi del codice e nel profiling delle applicazioni. Ad esempio, CodeGuru Reviewer viene istruito tramite rule mining e modelli di machine learning soggetti a supervisione che uniscono regressione logistica e reti neurali. Durante la fase di istruzione per il rilevamento della mancata conformità alle best practice, effettua il mining dei codebase di Amazon per le richieste pull che includono le chiamate API di AWS. Il servizio esamina le modifiche al codice e ne effettua i riferimenti incrociati rispetto ai dati della documentazione, che vengono sottoposti anche a mining in parallelo. Ciò determina la creazione di nuovi modelli per le best practice utilizzate dal servizio CodeGuru Reviewer per analizzare il tuo codice e fornire suggerimenti. Anche CodeGuru Profiler viene istruito dai performance engineer di Amazon e viene impiegato per il profiling di decine di migliaia di servizi utilizzati internamente in Amazon. Puoi decidere di accettare ogni suggerimento offerto da CodeGuru: maggiore sarà la quantità di feedback che fornirai, migliori saranno i suggerimenti ottenuti.
Rilevamento delle righe di codice più dispendiose
CodeGuru Profiler è sempre alla ricerca di nuovi modi per ottimizzare le prestazioni delle applicazioni, identificando le righe di codice che comportano l'uso eccessivo delle risorse e consigliando le opportune correzioni al fine di ridurre l'uso della CPU e le risorse di calcolo richieste, nonché di migliorare le prestazioni dell'applicazione sottoposta ad analisi. CodeGuru Profiler fornisce consigli specifici per consentirti di intervenire immediatamente su problemi come processi di creazione eccessivi di oggetti dispendiosi, deserializzazioni costose, utilizzo di librerie inefficienti e l'eccesso di registrazioni di log. CodeGuru Profiler viene eseguito di continuo nelle fasi di produzione, consuma capacità di CPU minime e pertanto non ha alcun impatto sulle prestazioni dell'applicazione. Puoi iniziare a effettuare il profiling dell'applicazione installando un piccolo agente che utilizza il codice fornito da CodeGuru e configurandolo nella console di CodeGuru.
Se Amazon CodeGuru Profiler riscontra la possibilità di ottimizzare le prestazioni dell'applicazione, ti spiegherà il motivo per cui ti viene suggerita una data modifica, la causa del problema e la soluzione, nonché i punti del codice in cui il problema influisce negativamente sull'applicazione.
Amazon CodeGuru Reviewer analizza le richieste pull e ti offre suggerimenti rispetto al codice sorgente su GitHub o AWS CodeCommit, insieme a una descrizione della causa del problema e del modo in cui puoi risolverlo.
Individua subito i problemi nel codice, non attendere che si manifestino
CodeGuru Reviewer analizza i possibili problemi che non ti lasciano dormire la notte e ti suggerisce come risolverli. Rileva la mancata conformità alle best practice per l'uso delle API e degli SDK di AWS, segnala le problematiche comuni che possono comportare problemi di produzione, come il rilevamento di paginazioni mancanti o errori nella gestione di operazioni in batch. Individua problemi di concorrenza come le violazioni di atomicità e l'uso di classi non sicure per i thread, che risultano difficili da rilevare anche da parte dei programmatori più esperti. Rileva la chiusura errata delle risorse che crea problemi di latenza e interruzioni delle funzionalità. Inoltre, individua la validazione degli input corretti, laddove gli input impuri possono determinare problemi come attacchi di tipo Injection o Denial of Service. Puoi associare i repository di codice esistenti su GitHub o AWS CodeCommit a CodeGuru per iniziare ad analizzare il codice.
Il servizio è economico, tanto da poter essere usato per ogni analisi del codice e per tutte le applicazioni
CodeGuru è abbastanza economico da poter essere utilizzato per ogni analisi del codice e tutte le applicazioni che esegui. Il servizio è disponibile a un semplice prezzo mensile a consumo, in base al numero di righe di codice sottoposte ad analisi e alle ore di campionamento per profilo dell'applicazione. Ad esempio, se hai una richiesta pull tipica con 500 righe di codice, il costo per l'esecuzione di CodeGuru ammonta solo a 3,75 USD. Prova il servizio gratuitamente per i primi 90 giorni. Al termine del periodo di prova, CodeGuru ha un costo di 0,005 USD per ora di campionamento per profilo dell'applicazione e di 0,75 USD per 100 righe di codice al mese. Consulta la pagina dei prezzi »
10 milioni di USD
Le opinioni degli sviluppatori su Amazon CodeGuru
Chris Butterfield, un ingegnere di sviluppo software che lavora a un servizio di programmazione per i venditori su Amazon.in:
"Dopo aver eseguito CodeGuru Profiler e averne osservato i suggerimenti, ho capito che dovevamo aggiornare il nostro servizio per risolvere un bug relativo al blocco della CPU. La correzione suggerita ha funzionato alla perfezione e ha eliminato l'avviso relativo al conflitto di thread, che utilizzava il 55,97% del tempo di utilizzo della CPU. Dopo la correzione, ho completato i test di carico e ho riscontrato che adesso un singolo host può servire 700 TPS, ovvero circa un traffico 7,5 volte maggiore di quello che era in grado di gestire in precedenza. Abbiamo potuto ridurre il numero di istanze di circa il 75% dopo i test di carico, riuscendo a gestire comunque lo stesso traffico."
Rajesh Konatham, un ingegnere di sviluppo software senior che lavora al servizio di gestione cataloghi per Amazon.com:
"Abbiamo appena disabilitato alcune configurazioni relative al software per migliorare i tempi di avvio del server e ridurre l'ingombro del profilo. Abbiamo utilizzato CodeGuru Profiler per comprendere l'impatto di questa modifica e ci siamo resi conto che il nostro sistema di gestione dei flussi di lavoro clonava i documenti ogni volta che eseguiva i branch, anche quando ciò non era richiesto. Per questo motivo, impiegavamo il 15% della capacità della CPU per una clonazione dei valori del tutto superflua. Dopo aver seguito il suggerimento di CodeGuru Profiler circa la rimozione dei valori clonati, abbiamo riscontrato una grande riduzione nell'utilizzo della CPU, pari al 40% sul parco istanze sincrono e il 67% su quello asincrono. Molto di più della riduzione dell'utilizzo della CPU del 15% che avevamo previsto! L'ulteriore riduzione è dovuta a una minore attività di garbage collection, dal momento che i cloni non occupano più la memoria heap."
Neeraj Kumar, un ingegnere di sviluppo software senior che lavora a Amazon CloudWatch:
"Abbiamo eseguito CodeGuru Profiler e abbiamo riscontrato che la maggior parte della capacità della CPU veniva impiegata per firmare la richiesta Amazon S3 tramite SHA-2. Usavamo l'implementazione fornita da JDK per SHA-2, tuttavia CodeGuru Profiler ci ha suggerito di sostituirla con Amazon Corretto Crypto Provider. Abbiamo seguito il suggerimento, che ci ha consentito di implementare alcuni di quegli algoritmi di crittografia in modo più rapido. Il servizio Corretto Crypto Provider funziona esattamente come JDK, pertanto abbiamo imparato a usarlo senza problemi. Dopo la distribuzione, abbiamo registrato una riduzione dell'uso della CPU di circa il 30% in diverse regioni AWS."
Mike Thompson, un ingegnere di sviluppo software senior che lavora agli strumenti di sviluppo build di AWS:
"CodeGuru Reviewer ci ha consentito di individuare una race condition presente da tanto tempo e nascosta in un punto critico del codice. Solo con l'analisi da parte di un operatore umano non avremmo mai potuto individuarla, dato che si trovava al di fuori delle parti del codice che ho modificato. CodeGuru Reviewer ha fornito un contesto sufficiente sul bug, una spiegazione chiara della sua dannosità e un esempio di come correggerlo. Apportare le modifiche richieste è stato facilissimo e ha richiesto solo pochi minuti. È stato ottimo poter contare su un servizio per migliorare la qualità del codice senza la necessità di configurazione e senza ingombro."
Danish Bashar, un ingegnere di sviluppo software che lavora a AWS DynamoDB:
"Stavo scaricando un file da Amazon S3 senza rendermi conto che si trattava di un flusso. Ciò ha determinato una perdita di risorse. I test dell'unità non avrebbero rilevato il problema, dal momento che tutto funzionava a dovere. Dal momento che non ho scritto in modo esplicito il tipo di oggetto, non l'ho notato e posso affermare con certezza che nessun altro avrebbe potuto accorgersi del problema in sede di analisi del codice. CodeGuru Reviewer ha impiegato pochi minuti per esaminare la semantica del codice e ha individuato la perdita di risorse in modo relativamente rapido. CodeGuru Reviewer mi ha suggerito di usare delle risorse di prova per chiudere la risorsa e le ho implementate subito. Problema risolto."
Geetika Vasudeo, un ingegnere di sviluppo software che lavora a AWS DynamoDB:
"Utilizzavamo una tabella di Amazon DynamoDB in un modo che di solito non adottiamo e non ce ne siamo accorti durante l'analisi del codice. CodeGuru Reviewer ha rilevato che l'operazione restituiva risultati paginati anziché tutti i risultati. Abbiamo effettuato alcune scansioni e abbiamo recuperato solo i risultati sulla prima pagina. Non si trattava di un problema immediato, ma all'aumentare delle dimensioni della tabella, avremmo finito con il vedere solo la prima pagina, perdendo il resto dei risultati. Una situazione del genere, se non viene gestita correttamente, può trasformarsi in un bug grave nel codice. Bel colpo e ottimo suggerimento!"
Visita la pagina delle caratteristiche.
Ottieni accesso istantaneo al piano gratuito di AWS.
Inizia subito a utilizzare Amazon CodeGuru nella console di gestione AWS.