SofiaWL-LearnerPlusPlus 1.1.5

dotnet tool install --global SofiaWL-LearnerPlusPlus --version 1.1.5
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local SofiaWL-LearnerPlusPlus --version 1.1.5
                    
This package contains a .NET tool you can call from the shell/command line.
#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:

  1. 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.

  2. Install the SofiaWL-LearnerPlusPlus package and download the simulation commands and configuration files from the official GitHub repository.

dotnet tool install --global SofiaWL-LearnerPlusPlus
  1. 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"
},

  1. 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"
  1. Open PowerShell and run the simulations.ps1 script to simulate the performance of all the studied recommendation strategies across all projects.
./simulations.ps1
  1. 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
  1. 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.1.5 136 9/7/2025
1.1.4 134 9/7/2025
1.1.3 134 9/7/2025
1.1.2 132 8/11/2025
1.1.1 131 8/10/2025