SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Perceval, Graal and Arthur
The Quest for Software Project Data
Jesus M. Gonzalez-Barahona, Santiago Dueñas, Valerio Cosentino
@jgbarah, @sduenasd, @_valcos_
[jgb, sduenas, valcos] at bitergia.com
https://speakerdeck.com/bitergia
Open Source Summit North America,
Vancouver,
August 29th-31st, 2018
/chaoss
/grimoirelab
Software development
analytics with
free, open source software
(a CHAOSS project)
chaoss.github.io/grimoirelab
chaoss.github.io/grimoirelab-tutorial
/bitergia
Software Development Analytics
for your peace of mind
Outline
Context
Perceval
Graal
Arthur
Explotation
/context
/context
Are there new contributors?
/context
How many bugs were fixed past month?
/context
Has our gender diversity increased lately?
/context
Perceval gathers data for you
chaoss/grimoirelab-perceval
/perceval
/perceval
Backend gathering process for a specific data
source, incremental and archiving mechanisms.
Client complexities to query the data source
(e.g., pagination, OAuth access) handles
connection problems.
CommandLine set up parameters to execute a
backend. Optional arguments such as help and
debug.
/perceval As a program
$ pip3 install perceval
$ perceval github chaoss grimoirelab-perceval
--from-date=2017-03-01 --api-token=5…
[2018-08-01 12:31:10] - Sir Perceval is on his quest.
[2018-08-01 12:31:11] - Getting info for
https://api.github.com/users/jgbarah
[2018-08-01 12:31:12] - Getting info for
https://api.github.com/users/sduenas
… producing JSON documents …
[2018-08-01 12:34:22] - Sir Perceval completed his quest
/perceval
As a Python3 library
from perceval.backends.core.github import GitHub
from_date = datetime.datetime(2017, 3, 1)
github = GitHub("chaoss", "grimoirelab-perceval",
api_token="5e3d7...")
for issue in github.fetch(from_date=from_date):
print(issue['data'])
/perceval
{ "backend_name": "GitHub",
"backend_version": "0.17.2",
"category": "issue",
"data": {
"comments": 5,
"comments_data": {...}
"created_at": "2017-02-28T05:33:10Z",
....,
"id": 210691361,
"state": "closed",
"title": "..",
"updated_at": "2017-03-02T09:51:49Z"
},
"origin": "https://github.com/chaoss/grimoirelab-perceval",
"perceval_version": "0.11.7",
"tag": "https://github.com/chaoss/grimoirelab-perceval",
"timestamp": 1517479766.878609,
"updated_on": 1488448309.0,
"uuid": "77a42463d5d0a34b1d58006263b85909a9788b52" }
Data source
data
}
]Perceval
data
/graal
No code-based analysis with Perceval:
- Code complexity
- License evolution
- ...
/graal
Graal does it!
It leverages on the incremental functionalities
of Perceval and enhances the logic to handle
Git repositories to process source code
valeriocos/graal
/graal
/graal
Filter of commits based on Git JSON
documents. For selected commits,
checkouts it on the working tree.
Analysis executes analysis tools in the
working tree . Results of the analysis are
automatically embedded in the JSON
document.
Post-process alters the attributes of
inflated JSON document, thus granting the
user complete control over the output.
/graal
Code Complexity Dependencies
Quality checks Security
Backends
/graal As a program
$ pip install graal
$ sudo apt-install cloc
$ graal cocom
https://github.com/chaoss/grimoirelab-perceval
--git-path /tmp/graal-cocom
[2018-05-30 18:22:35,643] - Starting the quest for the
Graal.
[2018-05-30 18:22:39,958] - Git worktree /tmp/...
created!
[2018-05-30 18:22:39,959] - Fetching commits
… producing JSON documents …
[2018-05-31 04:51:56,112] - Quest completed.
/graal
As a Python3 library
from graal.backends.core.cocom import CoCom
repo_uri =
"https://github.com/chaoss/grimoirelab-perceval"
repo_dir = "/tmp/graal-cocom"
cc = CoCom(uri=repo_uri, gitpath=repo_dir)
commits = [commit for commit in cc.fetch()]
/graal
{ "backend_name": "CoCom",
"backend_version": "0.2.1",
"category": “code_complexity",
"data": {
"AuthorDate": “Mon May 28 ...”,
"CommitDate": “Mon May 28 ...”,
"commit": "dc78c25….",
"message": "Increase coverage ...",
"analysis": [{
"ccn": 80, “num_funs”: 33, …,
"comments": "153", “loc”: 341,
"file_path": "perceval/backend.py",
}], ...
},
"origin": "https://github.com/chaoss/grimoirelab-perceval",
"graal_version": "0.1.0",
"tag": "https://github.com/chaoss/grimoirelab-perceval",
"timestamp": 1534782753.878609,
"updated_on": 1392000436.0,
"uuid": "77a42463d5d0a34b1d58006263b85909a9788b52" }
Git metadata
}
]Graal
data
} Code data
/arthur
Arthur allows to schedule and run Perceval (and Graal)
executions at scale through distributed Redis queues.
chaoss/grimoirelab-kingarthur
/explotation
/explotation
/explotation
/resources
chaoss/grimoirelab-perceval
chaoss/grimoirelab-kingarthur
valeriocos/graal
grimoirelab.github.io
Perceval
Graal
@grimoirelab
@bitergia
@CHAOSSproj

Mais conteúdo relacionado

Mais procurados

Gonzalez barahona community_board_metrics_0415162
Gonzalez barahona community_board_metrics_0415162Gonzalez barahona community_board_metrics_0415162
Gonzalez barahona community_board_metrics_0415162
OpenStack Foundation
 

Mais procurados (20)

Reactive Databases for Big Data applications
Reactive Databases for Big Data applicationsReactive Databases for Big Data applications
Reactive Databases for Big Data applications
 
Graph Computing with Apache TinkerPop
Graph Computing with Apache TinkerPopGraph Computing with Apache TinkerPop
Graph Computing with Apache TinkerPop
 
Dataset Descriptions in Open PHACTS and HCLS
Dataset Descriptions in Open PHACTS and HCLSDataset Descriptions in Open PHACTS and HCLS
Dataset Descriptions in Open PHACTS and HCLS
 
JanusGraph: Looking Backward, Reaching Forward
JanusGraph: Looking Backward, Reaching ForwardJanusGraph: Looking Backward, Reaching Forward
JanusGraph: Looking Backward, Reaching Forward
 
Linking Syriac Geographical Data
Linking Syriac Geographical DataLinking Syriac Geographical Data
Linking Syriac Geographical Data
 
Elastic Stack Introduction
Elastic Stack IntroductionElastic Stack Introduction
Elastic Stack Introduction
 
Start Flying with Python & Apache TinkerPop
Start Flying with Python & Apache TinkerPopStart Flying with Python & Apache TinkerPop
Start Flying with Python & Apache TinkerPop
 
Gonzalez barahona community_board_metrics_0415162
Gonzalez barahona community_board_metrics_0415162Gonzalez barahona community_board_metrics_0415162
Gonzalez barahona community_board_metrics_0415162
 
This week in Neo4j - 14th October 2017
This week in Neo4j - 14th October 2017This week in Neo4j - 14th October 2017
This week in Neo4j - 14th October 2017
 
Data Visualisations In IavaScript
Data Visualisations In IavaScriptData Visualisations In IavaScript
Data Visualisations In IavaScript
 
Spark Streaming @ Berlin Apache Spark Meetup, March 2015
Spark Streaming @ Berlin Apache Spark Meetup, March 2015Spark Streaming @ Berlin Apache Spark Meetup, March 2015
Spark Streaming @ Berlin Apache Spark Meetup, March 2015
 
BETTER Session, Excercise 1 @ EO Joint Big Data Hackathon
BETTER Session, Excercise 1 @ EO Joint Big Data HackathonBETTER Session, Excercise 1 @ EO Joint Big Data Hackathon
BETTER Session, Excercise 1 @ EO Joint Big Data Hackathon
 
Exploring Graph Use Cases with JanusGraph
Exploring Graph Use Cases with JanusGraphExploring Graph Use Cases with JanusGraph
Exploring Graph Use Cases with JanusGraph
 
All About GRAND Stack: GraphQL, React, Apollo, and Neo4j (Mark Needham) - Gre...
All About GRAND Stack: GraphQL, React, Apollo, and Neo4j (Mark Needham) - Gre...All About GRAND Stack: GraphQL, React, Apollo, and Neo4j (Mark Needham) - Gre...
All About GRAND Stack: GraphQL, React, Apollo, and Neo4j (Mark Needham) - Gre...
 
An efficient data mining solution by integrating Spark and Cassandra
An efficient data mining solution by integrating Spark and CassandraAn efficient data mining solution by integrating Spark and Cassandra
An efficient data mining solution by integrating Spark and Cassandra
 
Self-Service IoT Data Analytics with StreamPipes
Self-Service IoT Data Analytics with StreamPipesSelf-Service IoT Data Analytics with StreamPipes
Self-Service IoT Data Analytics with StreamPipes
 
Enabling Cloud Bursting for Life Sciences within Galaxy
Enabling Cloud Bursting for Life Sciences within GalaxyEnabling Cloud Bursting for Life Sciences within Galaxy
Enabling Cloud Bursting for Life Sciences within Galaxy
 
Airline Reservations and Routing: A Graph Use Case
Airline Reservations and Routing: A Graph Use CaseAirline Reservations and Routing: A Graph Use Case
Airline Reservations and Routing: A Graph Use Case
 
Real-time Analytics with Presto and Apache Pinot
Real-time Analytics with Presto and Apache PinotReal-time Analytics with Presto and Apache Pinot
Real-time Analytics with Presto and Apache Pinot
 
Community-Driven Graphs with JanusGraph
Community-Driven Graphs with JanusGraphCommunity-Driven Graphs with JanusGraph
Community-Driven Graphs with JanusGraph
 

Semelhante a Perceval, Graal and Arthur: The Quest for Software Project Data

Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
vasya10
 
Through the firewall with miniCRAN
Through the firewall with miniCRANThrough the firewall with miniCRAN
Through the firewall with miniCRAN
Revolution Analytics
 
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcaderoIasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
Codecamp Romania
 

Semelhante a Perceval, Graal and Arthur: The Quest for Software Project Data (20)

Measuring Software development with GrimoireLab
Measuring Software development with GrimoireLabMeasuring Software development with GrimoireLab
Measuring Software development with GrimoireLab
 
Measuring Software development with GrimoireLab
Measuring Software development with GrimoireLabMeasuring Software development with GrimoireLab
Measuring Software development with GrimoireLab
 
Grooscript gr8conf 2015
Grooscript gr8conf 2015Grooscript gr8conf 2015
Grooscript gr8conf 2015
 
Grokking Techtalk #38: Escape Analysis in Go compiler
 Grokking Techtalk #38: Escape Analysis in Go compiler Grokking Techtalk #38: Escape Analysis in Go compiler
Grokking Techtalk #38: Escape Analysis in Go compiler
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
OGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial IntroOGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial Intro
 
Through the firewall with miniCRAN
Through the firewall with miniCRANThrough the firewall with miniCRAN
Through the firewall with miniCRAN
 
Intro elasticsearch taswarbhatti
Intro elasticsearch taswarbhattiIntro elasticsearch taswarbhatti
Intro elasticsearch taswarbhatti
 
Groovy and Grails
Groovy and GrailsGroovy and Grails
Groovy and Grails
 
Python and Sage
Python and SagePython and Sage
Python and Sage
 
AI 클라우드로 완전 정복하기 - 데이터 분석부터 딥러닝까지 (윤석찬, AWS테크에반젤리스트)
AI 클라우드로 완전 정복하기 - 데이터 분석부터 딥러닝까지 (윤석찬, AWS테크에반젤리스트)AI 클라우드로 완전 정복하기 - 데이터 분석부터 딥러닝까지 (윤석찬, AWS테크에반젤리스트)
AI 클라우드로 완전 정복하기 - 데이터 분석부터 딥러닝까지 (윤석찬, AWS테크에반젤리스트)
 
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryCodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
 
Research software and Dataverse
Research software and DataverseResearch software and Dataverse
Research software and Dataverse
 
20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge
 
Putting data science to work
Putting data science to workPutting data science to work
Putting data science to work
 
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGISSFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
 
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcaderoIasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
Iasi code camp 20 april 2013 testing big data-anca sfecla - embarcadero
 
Indiana University's Advanced Science Gateway Support
Indiana University's Advanced Science Gateway SupportIndiana University's Advanced Science Gateway Support
Indiana University's Advanced Science Gateway Support
 
Complex realtime event analytics using BigQuery @Crunch Warmup
Complex realtime event analytics using BigQuery @Crunch WarmupComplex realtime event analytics using BigQuery @Crunch Warmup
Complex realtime event analytics using BigQuery @Crunch Warmup
 

Mais de Valerio Cosentino

Gamification oss
Gamification ossGamification oss
Gamification oss
Valerio Cosentino
 
Extracting Business Rules from COBOL: A Model-Based Framework
Extracting Business Rules from COBOL: A Model-Based FrameworkExtracting Business Rules from COBOL: A Model-Based Framework
Extracting Business Rules from COBOL: A Model-Based Framework
Valerio Cosentino
 
A Model Driven Reverse Engineering framework for extracting business rules ou...
A Model Driven Reverse Engineering framework for extracting business rules ou...A Model Driven Reverse Engineering framework for extracting business rules ou...
A Model Driven Reverse Engineering framework for extracting business rules ou...
Valerio Cosentino
 

Mais de Valerio Cosentino (16)

Tracking counterfeiting on the web with python and ml
Tracking counterfeiting on the web with python and mlTracking counterfeiting on the web with python and ml
Tracking counterfeiting on the web with python and ml
 
GrimoireLab: Measuring the health of your software project with Python
GrimoireLab: Measuring the health of your software project with PythonGrimoireLab: Measuring the health of your software project with Python
GrimoireLab: Measuring the health of your software project with Python
 
Gamification oss
Gamification ossGamification oss
Gamification oss
 
SortingHat: Wizardry on Software Project Members
SortingHat: Wizardry on Software Project MembersSortingHat: Wizardry on Software Project Members
SortingHat: Wizardry on Software Project Members
 
Crossminer and GrimoireLab
Crossminer and GrimoireLabCrossminer and GrimoireLab
Crossminer and GrimoireLab
 
Perceval: Software Project Data at Your Will
Perceval: Software Project Data at Your WillPerceval: Software Project Data at Your Will
Perceval: Software Project Data at Your Will
 
Extending grimoirelab
Extending grimoirelabExtending grimoirelab
Extending grimoirelab
 
Perceval
PercevalPerceval
Perceval
 
Gamification pres-scme-2017
Gamification pres-scme-2017Gamification pres-scme-2017
Gamification pres-scme-2017
 
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
A Model-Based Approach for Extracting Business Rules out of Legacy Informatio...
 
Gitana: a SQL-based Git Repository Inspector
Gitana: a SQL-based Git Repository InspectorGitana: a SQL-based Git Repository Inspector
Gitana: a SQL-based Git Repository Inspector
 
Assessing the Bus Factor of Git Repositories
Assessing the Bus Factor of Git RepositoriesAssessing the Bus Factor of Git Repositories
Assessing the Bus Factor of Git Repositories
 
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIsA Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
 
Extracting Business Rules from COBOL: A Model-Based Framework
Extracting Business Rules from COBOL: A Model-Based FrameworkExtracting Business Rules from COBOL: A Model-Based Framework
Extracting Business Rules from COBOL: A Model-Based Framework
 
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
 
A Model Driven Reverse Engineering framework for extracting business rules ou...
A Model Driven Reverse Engineering framework for extracting business rules ou...A Model Driven Reverse Engineering framework for extracting business rules ou...
A Model Driven Reverse Engineering framework for extracting business rules ou...
 

Último

Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Christo Ananth
 

Último (20)

(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 

Perceval, Graal and Arthur: The Quest for Software Project Data

  • 1. Perceval, Graal and Arthur The Quest for Software Project Data Jesus M. Gonzalez-Barahona, Santiago Dueñas, Valerio Cosentino @jgbarah, @sduenasd, @_valcos_ [jgb, sduenas, valcos] at bitergia.com https://speakerdeck.com/bitergia Open Source Summit North America, Vancouver, August 29th-31st, 2018
  • 3. /grimoirelab Software development analytics with free, open source software (a CHAOSS project) chaoss.github.io/grimoirelab chaoss.github.io/grimoirelab-tutorial
  • 7. /context Are there new contributors?
  • 8. /context How many bugs were fixed past month?
  • 9. /context Has our gender diversity increased lately?
  • 10. /context Perceval gathers data for you chaoss/grimoirelab-perceval
  • 12. /perceval Backend gathering process for a specific data source, incremental and archiving mechanisms. Client complexities to query the data source (e.g., pagination, OAuth access) handles connection problems. CommandLine set up parameters to execute a backend. Optional arguments such as help and debug.
  • 13. /perceval As a program $ pip3 install perceval $ perceval github chaoss grimoirelab-perceval --from-date=2017-03-01 --api-token=5… [2018-08-01 12:31:10] - Sir Perceval is on his quest. [2018-08-01 12:31:11] - Getting info for https://api.github.com/users/jgbarah [2018-08-01 12:31:12] - Getting info for https://api.github.com/users/sduenas … producing JSON documents … [2018-08-01 12:34:22] - Sir Perceval completed his quest
  • 14. /perceval As a Python3 library from perceval.backends.core.github import GitHub from_date = datetime.datetime(2017, 3, 1) github = GitHub("chaoss", "grimoirelab-perceval", api_token="5e3d7...") for issue in github.fetch(from_date=from_date): print(issue['data'])
  • 15. /perceval { "backend_name": "GitHub", "backend_version": "0.17.2", "category": "issue", "data": { "comments": 5, "comments_data": {...} "created_at": "2017-02-28T05:33:10Z", ...., "id": 210691361, "state": "closed", "title": "..", "updated_at": "2017-03-02T09:51:49Z" }, "origin": "https://github.com/chaoss/grimoirelab-perceval", "perceval_version": "0.11.7", "tag": "https://github.com/chaoss/grimoirelab-perceval", "timestamp": 1517479766.878609, "updated_on": 1488448309.0, "uuid": "77a42463d5d0a34b1d58006263b85909a9788b52" } Data source data } ]Perceval data
  • 16. /graal No code-based analysis with Perceval: - Code complexity - License evolution - ...
  • 17. /graal Graal does it! It leverages on the incremental functionalities of Perceval and enhances the logic to handle Git repositories to process source code valeriocos/graal
  • 19. /graal Filter of commits based on Git JSON documents. For selected commits, checkouts it on the working tree. Analysis executes analysis tools in the working tree . Results of the analysis are automatically embedded in the JSON document. Post-process alters the attributes of inflated JSON document, thus granting the user complete control over the output.
  • 21. /graal As a program $ pip install graal $ sudo apt-install cloc $ graal cocom https://github.com/chaoss/grimoirelab-perceval --git-path /tmp/graal-cocom [2018-05-30 18:22:35,643] - Starting the quest for the Graal. [2018-05-30 18:22:39,958] - Git worktree /tmp/... created! [2018-05-30 18:22:39,959] - Fetching commits … producing JSON documents … [2018-05-31 04:51:56,112] - Quest completed.
  • 22. /graal As a Python3 library from graal.backends.core.cocom import CoCom repo_uri = "https://github.com/chaoss/grimoirelab-perceval" repo_dir = "/tmp/graal-cocom" cc = CoCom(uri=repo_uri, gitpath=repo_dir) commits = [commit for commit in cc.fetch()]
  • 23. /graal { "backend_name": "CoCom", "backend_version": "0.2.1", "category": “code_complexity", "data": { "AuthorDate": “Mon May 28 ...”, "CommitDate": “Mon May 28 ...”, "commit": "dc78c25….", "message": "Increase coverage ...", "analysis": [{ "ccn": 80, “num_funs”: 33, …, "comments": "153", “loc”: 341, "file_path": "perceval/backend.py", }], ... }, "origin": "https://github.com/chaoss/grimoirelab-perceval", "graal_version": "0.1.0", "tag": "https://github.com/chaoss/grimoirelab-perceval", "timestamp": 1534782753.878609, "updated_on": 1392000436.0, "uuid": "77a42463d5d0a34b1d58006263b85909a9788b52" } Git metadata } ]Graal data } Code data
  • 24. /arthur Arthur allows to schedule and run Perceval (and Graal) executions at scale through distributed Redis queues. chaoss/grimoirelab-kingarthur