SofiaWL-ExpertPlusPlus
1.1.3
dotnet tool install --global SofiaWL-ExpertPlusPlus --version 1.1.3
dotnet new tool-manifest
dotnet tool install --local SofiaWL-ExpertPlusPlus --version 1.1.3
#tool dotnet:?package=SofiaWL-ExpertPlusPlus&version=1.1.3
nuke :add-package SofiaWL-ExpertPlusPlus --version 1.1.3
This package contains the necessary methods to replicate the information from the "Mitigating the Risk of Defects and Improving Knowledge Distribution with Code Reviewer Recommenders" study, which is accepted for presentation at the FSE'26 Conference.
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
.bacpacfile, 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.bacpacfile 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-ExpertPlusPluspackage and download the simulation commands and configuration files from the official GitHub repository.
dotnet tool install --global SofiaWL-ExpertPlusPlus --version 1.1.3
- 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_Defect"
},
- 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 Roslyn project.
$roslyn_conf_replace = "Absolute\Path\To\Config\Replace_All\roslyn_conf.json"
$roslyn_conf_AddExpert25 = "Absolute\Path\To\Config\Add_Expert_25\roslyn_conf.json"
$roslyn_conf_AddExpert50 = "Absolute\Path\To\Config\Add_Expert_50\roslyn_conf.json"
$roslyn_conf_AddExpert75 = "Absolute\Path\To\Config\Add_Expert_75\roslyn_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
Rolsynproject.
-- Get the Id of the simulation
SELECT Id,
KnowledgeShareStrategyType,
StartDateTime,
EndDateTime
PullRequestReviewerSelectionStrategy,
SimulationType
FROM [Roslyn_Defect].[dbo].[LossSimulations]
WHERE EndDateTime > StartDateTime
ORDER BY StartDateTime DESC
- To get your simulation results, you should run the analyzer using the following command. Substitute the
<rec_sim_id>variable with the Id of your desired recommender, and compare the recommender performance with the actual values,<reality_id>. Note that you can add multiple simulation IDs, separating them with a space. You should also substitute<path_to_result>and<path_to_config_file>variables with the path where you want to save the results and the config file of the corresponding project.
dotnet-rgit --cmd analyze-simulations --analyze-result-path <path_to_result> --recommender-simulation <rec_sim_id> --reality-simulation <reality_id> --conf-path <path_to_config_file>
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.