SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Il nostro amico Stan
PUG Roma
28 maggio 2019
Massimiliano Arione
Stan chi?
Static analysis
Static analysis
Static analysis
Cosa?
Toolz!
https://packagist.org/explore/?tags=analysis
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio. and other language constructs.
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
✔ check
● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del
linguaggio
● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del
numero di parametri passati
● Se un metodo restituisce lo stesso tipo dichiarato come return type.
● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si
assegni un tipo diverso da quello dichiarato.
● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe
di formato.
● Esistenza di variabili rispetto allo scope di blocchi e cicli.
https://packagist.org/explore/?type=phpstan-extension
Dove/quando?
Dove/quando?
1. sulla propria macchina, alla bisogna
2. sulla propria macchina, automaticamente
3. su una macchina remota, automaticamente
Dove/quando?
1. sulla propria macchina, alla bisogna
2. sulla propria macchina, automaticamente
3. su una macchina remota, automaticamente
Dove/quando?
1. sulla propria macchina, alla bisogna
2. sulla propria macchina, automaticamente
3. su una macchina remota, automaticamente
Dove/quando?
locale remoto
automatico
manuale
✔ ✔
✔
Grazie!
Il nostro amico Stan

Contenu connexe

Plus de Massimiliano Arione

Plus de Massimiliano Arione (18)

Scrivere e leggere log con elastic
Scrivere e leggere log con elasticScrivere e leggere log con elastic
Scrivere e leggere log con elastic
 
The metrics
The metricsThe metrics
The metrics
 
Managing frontend libs in your Symfony project
Managing frontend libs in your Symfony projectManaging frontend libs in your Symfony project
Managing frontend libs in your Symfony project
 
Translating symfony docs
Translating symfony docsTranslating symfony docs
Translating symfony docs
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php project
 
Gestire librerie di frontend in php
Gestire librerie di frontend in phpGestire librerie di frontend in php
Gestire librerie di frontend in php
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggio
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con Composer
 
Migrare da symfony 1 a Symfony2
 Migrare da symfony 1 a Symfony2  Migrare da symfony 1 a Symfony2
Migrare da symfony 1 a Symfony2
 
Case study OmniAuto.it
Case study OmniAuto.itCase study OmniAuto.it
Case study OmniAuto.it
 
Symfony: un framework per il web
Symfony: un framework per il webSymfony: un framework per il web
Symfony: un framework per il web
 
Paypal + symfony
Paypal + symfonyPaypal + symfony
Paypal + symfony
 
Sviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHPSviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHP
 
symfony & jQuery (phpDay)
symfony & jQuery (phpDay)symfony & jQuery (phpDay)
symfony & jQuery (phpDay)
 
symfony & jQuery (PUG)
symfony & jQuery (PUG)symfony & jQuery (PUG)
symfony & jQuery (PUG)
 
Lessons learned in PHP
Lessons learned in PHPLessons learned in PHP
Lessons learned in PHP
 
Symfony ignite
Symfony igniteSymfony ignite
Symfony ignite
 
Phpcon2009 Php e Sicurezza
Phpcon2009 Php e SicurezzaPhpcon2009 Php e Sicurezza
Phpcon2009 Php e Sicurezza
 

Dernier

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 

Dernier (9)

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 

Il nostro amico Stan

  • 1. Il nostro amico Stan PUG Roma 28 maggio 2019 Massimiliano Arione
  • 3.
  • 4.
  • 5.
  • 8.
  • 9.
  • 10.
  • 12. Cosa?
  • 13.
  • 16.
  • 17.
  • 18. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio. and other language constructs. ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 19. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 20. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 21. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 22. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 23. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 24. ✔ check ● Esistenza di classi usate in instanceof, catch, typehints e altri costrutti del linguaggio ● Esistenza e accessibilità di metodi e funzioni richiamati. Correttezza del numero di parametri passati ● Se un metodo restituisce lo stesso tipo dichiarato come return type. ● Esistenza e visibilità delle proprietà a cui si accede, compreso il caso in cui si assegni un tipo diverso da quello dichiarato. ● Numero di parametri passati alle chiamate a sprintf/printf in base alle stringhe di formato. ● Esistenza di variabili rispetto allo scope di blocchi e cicli.
  • 25.
  • 27.
  • 29. Dove/quando? 1. sulla propria macchina, alla bisogna 2. sulla propria macchina, automaticamente 3. su una macchina remota, automaticamente
  • 30. Dove/quando? 1. sulla propria macchina, alla bisogna 2. sulla propria macchina, automaticamente 3. su una macchina remota, automaticamente
  • 31. Dove/quando? 1. sulla propria macchina, alla bisogna 2. sulla propria macchina, automaticamente 3. su una macchina remota, automaticamente