Analyzes the git commits in the Compatibility Test Suite (CTS) that remove the test cases.
A <OUTPUT_FILENAME>_<COMMIT_START_DATE>_<COMMIT_END_DATE>.csv file with rows containing datetime, hash, commit msg, filename, test case
is generated.
To run the project, python should be installed on your machine. Check if it is installed or not using
python --version
If it is not installed, download and install python from https://www.python.org/downloads/
Then, clone the repository:
git clone https://github.com/STAM-NDSU/cts-analyzer
cd cts-analyzer
Then, setup virtual environment (optional)
python3 -m venv venv
source venv/bin/activate
Then, install the requirements:
pip install -r requirements.txt
Then, create a .env file and copy the contents of .env.example
REPO_PATH : Url of the cts repository to be analyzed or could be a local path to the repository installed on the machine
TARGET_BRANCH : Branch of the repository to be analyzed
COMMIT_START_DATE : Start date of the target commit history
COMMIT_END_DATE : End date of the target commit history. If it is not defined, it will be set to current date by default
CTS_COMMIT_INTERVAL : Interval in days to auto compute COMMIT_START_DATE. If COMMIT_START_DATE is defined, it will override the interval. By default, interval is 365 days
OUTPUT_DIR : Directory in the project root that will contain the generated csv file
OUTPUT_FILENAME: Filename of the generated csv file. Default is cts
TARGET_BRANCH should be a valid repository branch. The default branch of repository master. Configure accordingly in the .env file. Branches other than master should be written as origin/<branch-name>. Incorrect configuration will throw GitCommandError in the console
Finally, run following command
python3 main.py
- DOI(domain of interest) are the test cases removed from commits.
- Candidate files are valid test files ending with
*Test.java
To speed up the analysis speed, you can clone the cts repository in the project root using
git clone https://android.googlesource.com/platform/cts
And, change the CTS repository path in the .env file as
REPO_PATH=cts
Currently, it fails to analyze the commits for the below dates
07/29/2021 #mm/dd/YYYY
09/28/2021 #mm/dd/YYYY
3d7923cb734062240cddfd54594198f570243dac
ebdf728de125fb6b71008cb8e957b1ddf579b870
e65d6bebdba9df211b258fae996fe34b6eadb787
ssss
pip install -e git+https://github.com/bhattasuraj76/pydriller.git#egg=pydriller pip install -e git+https://github.com/bhattasuraj76/pydriller.git@testdelbench#egg=pydriller
To get a commit count for a revision (HEAD, master, a commit hash):
git rev-list --count
git rev-list --count master --until="2023-01-01" git log master --pretty=format:"%H - %ad - %an: %s" --until="2023-01-01 00:00:000" git log master --reverse --pretty=format:"%H - %ad - %an: %s" --until="2023-01-01 00:00:000"
#first and last commit git log master --pretty=format:"%H" --until="2023-01-01 00:00:000" | head -1 git log master --pretty=format:"%H" --until="2023-01-01 00:00:000" | tail -1
git log master --reverse --until="2023-01-01 00:00:000" --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:"%H _ %ad"
--date=format:'%Y-%m-%d %H:%M:%S'
To get the commit count across all branches:
git rev-list --all --count
git cherry master -v | head -n 1
$(($(git rev-list --count A..B) - 1))
Total not obsolete deleted tests: 4
Total TDC with not obsolete deleted tests: 3
Total parent commits of TDC with not obsolete deleted tests: 3
----*******----
gson
Total not obsolete deleted tests: 0
Total TDC with not obsolete deleted tests: 0
Total parent commits of TDC with not obsolete deleted tests: 0
----*******----
commons-math
Total not obsolete deleted tests: 18
Total TDC with not obsolete deleted tests: 6
Total parent commits of TDC with not obsolete deleted tests: 6
----*******----
jfreechart
Total not obsolete deleted tests: 0
Total TDC with not obsolete deleted tests: 0
Total parent commits of TDC with not obsolete deleted tests: 0
----*******----
joda-time
Total not obsolete deleted tests: 137
Total TDC with not obsolete deleted tests: 7
Total parent commits of TDC with not obsolete deleted tests: 7
----*******----
pmd
Total not obsolete deleted tests: 497
Total TDC with not obsolete deleted tests: 103
Total parent commits of TDC with not obsolete deleted tests: 102