This program collects information about the adoption of "modern" C++ features in Git repositories.
"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.
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.
To execute the program, just run:
$ cd target
$ java -jar CPPEvolution-analysis.jar <path-to-the-git-repos>
- auto and decltype
- Lambda Expressions
- range-for
- nullptr
- constexpr
- override and final
- enum classes
- attributes
- noexcept
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.
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".
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.