SofiaWL-LearnerPlusPlus
1.1.5
dotnet tool install --global SofiaWL-LearnerPlusPlus --version 1.1.5
dotnet new tool-manifest
dotnet tool install --local SofiaWL-LearnerPlusPlus --version 1.1.5
#tool dotnet:?package=SofiaWL-LearnerPlusPlus&version=1.1.5
nuke :add-package SofiaWL-LearnerPlusPlus --version 1.1.5
This package contains the necessary methods to replicate the information from the study "The Cost vs. the Benefit of Adding an Extra Code Reviewer to Mitigate Developer Turnover through Reviewer Recommenders" which is published in ICSE'26.
To run the simulations, follow these steps:
You should first download and restore the database backup into your local MS SQL Server from Figshare. There is a separate database for each studied project, and you should restore all of them. To restore a database from a
.bacpac
file, start by opening SQL Server Management Studio (SSMS) and connecting to your local SQL Server instance. In the Object Explorer, right-click on the Databases node and choose Import Data-tier Application. From there, click Browse to locate the.bacpac
file on your local disk. Once you’ve selected the file, follow the wizard by clicking Next, reviewing the steps, and then clicking Finish to complete the import process. This will restore your database and make it available in your SQL Server instance. Note that the databases are approximately 2 GB in size.Install the
SofiaWL-LearnerPlusPlus
package and download the simulation commands and configuration files from the official GitHub repository.
dotnet tool install --global SofiaWL-LearnerPlusPlus
- Open and modify each configuration file to set up the connection with the database. You have to provide the server address along with the credentials to your local SQL server instance. The following snippet shows a sample of how the connection string should be set.
"ConnectionStrings": {
"RelationalGit": "Server=ip_db_server;User Id=user_name;Password=pass_word;Database=Roslyn_PlusPlus"
},
- Open the simulations.ps1 file using an editor and update all the paths to the configuration files. For instance, each of the following variables contains the absolute path of the corresponding configuration file for the first research question.
$corefx_conf_RQ1 = "\absolute\path\to\Replace_Risky\corefx_conf.json"
$coreclr_conf_RQ1 = "\absolute\path\to\Replace_Risky\coreclr_conf.json"
$roslyn_conf_RQ1 = "\absolute\path\to\Replace_Risky\roslyn_conf.json"
$rust_conf_RQ1 = "\absolute\path\to\Replace_Risky\rust_conf.json"
$kubernetes_conf_RQ1 = "\absolute\path\to\Replace_Risky\kubernetes_conf.json"
- Open PowerShell and run the simulations.ps1 script to simulate the performance of all the studied recommendation strategies across all projects.
./simulations.ps1
- To get your simulation IDs, connect to your local SQL Server instance and run the following query for each project. This query is a sample for the
Rolsyn
project.
-- Get the Id of the simulation
SELECT Id,
KnowledgeShareStrategyType,
StartDateTime,
EndDateTime
PullRequestReviewerSelectionStrategy,
SimulationType
FROM [Roslyn_PlusPlus].[dbo].[LossSimulations]
WHERE EndDateTime > StartDateTime
ORDER BY StartDateTime DESC
- After restoring the simulation IDs, comment out the commands at the end of the simulations.ps1 file and set the values for
--analyze-result-path
,--recommender-simulation
, and--reality-simulation
. Then, run these commands to calculate the outcome measures and store the values in--analyze-result-path
.
dotnet-rgit --cmd analyze-simulations --analyze-result-path "\absolute\path\to\CoreFX_Results_Directory" --recommender-simulation <CoreFX-Simulation-Ids-SeparatedWithSpace> --reality-simulation <Reality-Id> --conf-path $corefx_conf_RQ1
dotnet-rgit --cmd analyze-simulations --analyze-result-path "\absolute\path\to\CoreCLR_Results_Directory" --recommender-simulation <CoreCLR-Simulation-Ids-SeparatedWithSpace> --reality-simulation <Reality-Id> --conf-path $coreclr_conf_RQ1
dotnet-rgit --cmd analyze-simulations --analyze-result-path "\absolute\path\to\Roslyn_Results_Directory" --recommender-simulation <Roslyn-Simulation-Ids-SeparatedWithSpace> --reality-simulation <Reality-Id> --conf-path $roslyn_conf_RQ1
dotnet-rgit --cmd analyze-simulations --analyze-result-path "\absolute\path\to\Rust_Results_Directory" --recommender-simulation <Rust-Simulation-Ids-SeparatedWithSpace> --reality-simulation <Reality-Id> --conf-path $rust_conf_RQ1
dotnet-rgit --cmd analyze-simulations --analyze-result-path "\absolute\path\to\Kubernetes_Results_Directory" --recommender-simulation <Kubernetes-Simulation-Ids-SeparatedWithSpace> --reality-simulation <Reality-Id> --conf-path $kubernetes_conf_RQ1
For more details, check out the official repository on GitHub.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.2 is compatible. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
This package has no dependencies.