{"id":17999271,"url":"https://github.com/marvinsxtr/2021-ba-sextro","last_synced_at":"2026-04-30T15:32:48.047Z","repository":{"id":82083372,"uuid":"471844032","full_name":"marvinsxtr/2021-ba-sextro","owner":"marvinsxtr","description":"Rust: Usability for a Lifetime? - An Empirical Approach","archived":false,"fork":false,"pushed_at":"2022-03-20T00:39:06.000Z","size":2734,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T07:14:07.829Z","etag":null,"topics":["rust","usability","usability-study"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marvinsxtr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-20T00:33:14.000Z","updated_at":"2022-08-05T18:27:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"53c59dd8-0b4f-4bba-9869-88d8a2f8649d","html_url":"https://github.com/marvinsxtr/2021-ba-sextro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marvinsxtr/2021-ba-sextro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinsxtr%2F2021-ba-sextro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinsxtr%2F2021-ba-sextro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinsxtr%2F2021-ba-sextro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinsxtr%2F2021-ba-sextro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marvinsxtr","download_url":"https://codeload.github.com/marvinsxtr/2021-ba-sextro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinsxtr%2F2021-ba-sextro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32469344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","usability","usability-study"],"created_at":"2024-10-29T22:11:10.625Z","updated_at":"2026-04-30T15:32:48.034Z","avatar_url":"https://github.com/marvinsxtr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 2021-ba-sextro\n\nThis repository contains the thesis \"Rust: Usability for a Lifetime? - An Empirical Approach\" as well as tools to collect usability metrics from Rust projects on GitHub and for analysis of the results.\n\n## Contents\n\n* [Collector](#collector)\n* [Analyzer](#analyzer)\n* [Data](#data)\n* [Thesis](#thesis)\n\n## General information\n\nThe environment variable `DATA_PATH` can be changed to an absolute path, where any data generated by the collector or the analyzer will be saved. By default, this is the `data` folder in this repository. Note that the tools were only tested on Linux.\n\n# Collector\n\nThis tool clones the repositories from the `awesome-rust` list, runs a set of tools on them and filters the results.\n\n## Setup\n\n### Install Rust\n\nInstall Rust using `rustup` by following [this guide](https://www.rust-lang.org/tools/install).\n\n### Install Clippy\n\n```sh\nrustup component add clippy\n```\n\n### Install rust-code-analysis-cli\n\nUninstall any previous version of the CLI.\n\n```shell\ncargo uninstall rust-code-analysis-cli\n```\n\nClone the forked rust-code-analysis tool.\n\n```shell\ngit clone https://github.com/marvinsxtr/rust-code-analysis.git\n```\n\nInstall the patched version.\n\n```shell\ncargo install --path rust-code-analysis/rust-code-analysis-cli\n```\n\n## Build and run\n\nFor an example usage see the [Example](#example) section.\n\n### Debug\n\n```shell\ncd collector\ncargo build\n./target/debug/collector -h\n```\n\n### Release\n\n```shell\ncd collector\ncargo build --release\n./target/release/collector -h\n```\n\n## Usage\n\n### Flags\n\n```\n-c, --clone_repos        \n-d, --delete_tmp         \n-f, --filter_metrics     \n-m, --collect_metrics    \n```\n\n### Options\n\n```\n-p, --input_path \u003cinput-path\u003e     [default: ../data/in/awesome-rust.txt]\n-n, --repo_count \u003crepo-count\u003e     [default: 1]\n-s, --repo_skips \u003crepo-skips\u003e     [default: 0]\n```\n\n## Documentation\n\n```\ncargo doc\n```\n\nOpen `target/doc/collector/index.html` in a browser.\n\n## Logs\n\nThe logs can be found in the `log` directory under the `DATA_PATH`.\n\n# Analyzer\n\nTool to analyze the results of the collector. This includes data aggregation, running statistic tests and generating LaTeX.\n\n## Setup\n\n### Virtual environment\n\n```sh\ncd analyzer\npython3 -m venv venv\nsource venv/bin/activate\n```\n\n### Install dependencies\n\n```sh\npip3 install -r requirements.txt\n```\n\n## Run\n\n```\ncd ..\npython3 -m analyzer -h\n```\n\nFor an example usage see the [Example](#example) section.\n\n## Scripts\n\n```\npython3 -m analyzer.scripts.\u003cname\u003e\n```\n\n## Usage\n\n### Options\n\n```\n-n REPO_COUNT, --repo_count REPO_COUNT - Number of repositories to analyze\n-s SKIP_REPOS, --skip_repos SKIP_REPOS - Number of repositories to skip\n-a, --analyze_repos - Whether to analyze the repositories\n-t, --statistic_tests - Whether to conduct the statistical tests\n-e EXPERIMENT_NAMES, --experiment_names EXPERIMENT_NAMES - Which experiments to run\n```\n\n# Data\n\n## Example\n\nThe folder `example` contains a small subset of the actual data set generated with the collector and the analyzer. In order to reproduce the example data, the following commands can be used:\n\n```sh\ncd collector\ncargo build\n./target/debug/collector -n 5 -c -m -f -d\ncd ..\npython3 -m analyzer -n 5 -a -t\n```\n\nRunning this should not take much longer than 5 min.\n\n## Complete\n\nThe complete data set generated by the tools in this repository and used for the thesis is available on [Nextcloud](https://cloud.teamusec.de/s/oQK84LJRCR82Nrk). The folder structure is the same as in the `data` folder of this repository.\n\n# Thesis\n\nThe thesis, which this repository repository is part of, is located in the `thesis` folder as `2021_ba_sextro.pdf` and can also be generated manually:\n\n```sh\ncd thesis\nmake\n```\n\n## Citation\n\n```\n@thesis{Sextro2021,\n    author = {Marvin Sextro},\n    title = {Rust: Usability for a Lifetime? - An Empirical Approach},\n    year = {2021},\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvinsxtr%2F2021-ba-sextro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarvinsxtr%2F2021-ba-sextro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvinsxtr%2F2021-ba-sextro/lists"}