first commit
This commit is contained in:
commit
cd1e91bb99
287 changed files with 86425 additions and 0 deletions
103
rasta_exp/nb_year_whithout_commit.py
Normal file
103
rasta_exp/nb_year_whithout_commit.py
Normal file
|
@ -0,0 +1,103 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Dep: GitPython
|
||||
|
||||
import time
|
||||
from typing import Any
|
||||
from git import Repo
|
||||
from pathlib import Path
|
||||
|
||||
import json
|
||||
|
||||
SOURCES = {
|
||||
"a3e": "https://github.com/tanzirul/a3e",
|
||||
"a5": "https://github.com/tvidas/a5",
|
||||
"adagio": "https://github.com/hgascon/adagio",
|
||||
"amandroid": "https://github.com/arguslab/Argus-SAF",
|
||||
"anadroid": "https://github.com/maggieddie/pushdownoo",
|
||||
"androguard": "https://github.com/androguard/androguard/",
|
||||
"apparecium": "https://github.com/askk/apparecium",
|
||||
"blueseal": "https://github.com/ub-rms/blueseal",
|
||||
"choi_et_al": "https://github.com/kwanghoon/JavaAnalysis",
|
||||
"didfail": "https://bitbucket.org/wklieber/didfail.git",
|
||||
"droidsafe": "https://github.com/MIT-PAC/droidsafe-src",
|
||||
"flowdroid": "https://github.com/secure-software-engineering/FlowDroid",
|
||||
"gator": None, # "http://web.cse.ohio-state.edu/presto/software/gator/",
|
||||
"ic3": "https://github.com/siis/ic3",
|
||||
"iccta": "https://github.com/lilicoding/soot-infoflow-android-iccta.git",
|
||||
"lotrack": "https://github.com/MaxLillack/Lotrack",
|
||||
"mallodroid": "https://github.com/sfahl/mallodroid",
|
||||
"redexer": "https://github.com/plum-umd/redexer",
|
||||
"saaf": "https://github.com/SAAF-Developers/saaf",
|
||||
"thresher": "https://github.com/cuplv/thresher",
|
||||
"thresher": "https://github.com/cuplv/thresher",
|
||||
"wognsen_et_al": "https://bitbucket.org/erw/dalvik-bytecode-analysis-tool.git",
|
||||
}
|
||||
|
||||
|
||||
# git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
|
||||
|
||||
|
||||
def rm_tree(path: Path):
|
||||
"""Delete a whole tree from the file system"""
|
||||
if path.is_file():
|
||||
path.unlink()
|
||||
else:
|
||||
for child in path.iterdir():
|
||||
rm_tree(child)
|
||||
path.rmdir()
|
||||
|
||||
|
||||
def get_nb_y_wo_commit(name, src) -> dict[str, Any]:
|
||||
p = Path("/") / "tmp" / "git_compute_years_witout_commit"
|
||||
p.mkdir(exist_ok=True)
|
||||
repo_path = p / name
|
||||
repo = Repo.clone_from(
|
||||
src, repo_path, multi_options=["--filter=blob:none", "--no-checkout"]
|
||||
)
|
||||
for ref in repo.remote().refs:
|
||||
repo.git.fetch(
|
||||
"origin", "/".join(str(ref).split("/")[1:]), "--filter=blob:none"
|
||||
)
|
||||
years = set()
|
||||
for c in repo.iter_commits("--all"):
|
||||
years.add(time.gmtime(c.authored_date).tm_year)
|
||||
first_year = min(years)
|
||||
current_year = time.localtime().tm_year
|
||||
nb_y_wo_commit = 0
|
||||
for y in range(first_year, current_year + 1):
|
||||
if y not in years:
|
||||
nb_y_wo_commit += 1
|
||||
print(f"Year of the first commit: {first_year}")
|
||||
print(
|
||||
f"NB of years without commit from {first_year} to {current_year}: {nb_y_wo_commit}"
|
||||
)
|
||||
|
||||
rm_tree(repo_path)
|
||||
return {
|
||||
"name": name,
|
||||
"src": src,
|
||||
"year_first_commit": first_year,
|
||||
"year_wo_commit": nb_y_wo_commit,
|
||||
}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
results = [
|
||||
{
|
||||
"name": "gator",
|
||||
"src": "http://web.cse.ohio-state.edu/presto/software/gator/",
|
||||
"year_first_commit": 2014,
|
||||
"year_wo_commit": 4,
|
||||
}
|
||||
]
|
||||
for tool in SOURCES:
|
||||
src = SOURCES[tool]
|
||||
if src is None:
|
||||
print(f"{tool}: Not a git repo")
|
||||
else:
|
||||
print(f"{tool}:")
|
||||
results.append(get_nb_y_wo_commit(tool, src))
|
||||
print()
|
||||
|
||||
print(json.dumps(results)) # TODO: write in a format good for latex
|
Loading…
Add table
Add a link
Reference in a new issue