Skip to content

PAMunb/cppEvolution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CPP Evolution Analysis

This program collects information about the adoption of "modern" C++ features in Git repositories.

Motivation

"After C++11 was beginning to see serious use, I started taking small unscientific surveys as I traveled widely to talk with C++ users: Which C++11 features do you most like? The top three were invariably" [1]

  • auto
  • lambdas
  • range for

[1] Bjarne Stroustrup: Thriving in a crowded and changing world: C++ 2006-2020. 70:1-70:168. The History of Programming Languages (2020).

So, we want to understand how and to which extent C++ developers adopt new language features (available from C++11 and above). We collect frequency of C++ feature adoption as well as historical trends observing the Git history of the projects.

Build

Clone the repository and then execute:

  • $ ./install-deps.sh (or simply add the dependencies manually using your IDE)
  • $ mvn mvn clean compile assembly:single

This will export a runnable JAR file named CPPEvolution-analysis.jar into the target project.

Run

To execute the program, just run:

  • $ cd target
  • $ java -jar CPPEvolution-analysis.jar <path-to-the-git-repos>

List of collect C++ features

  • auto and decltype
  • Lambda Expressions
  • range-for
  • nullptr
  • constexpr
  • override and final
  • enum classes
  • attributes
  • noexcept

CPP Commits Miner

This tool are created to analyse the output .csv exported after the execution of CPP evolution analysis. You need to extract the zip file in analysis folder and import a maven project called cpp-commits-miner.

Run

To run cpp-commits-miner you need to pass the path of full folder that contain the file "full-results.csv". This file is located in "./analysis/out/full-results.csv".

Other Scripts

All of our scripts are located in analysis folder in this repository.

  • The file clone_projects.py can be used to clone all repositories analysed in our study.

  • All Scripts R are located in "./analysis/datasets/" in this repository.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •