Introduction

This post is meant to be a reference for the work I’ve done during the sixth week.

Week 6

After the creation of a RcppDeepState GitHub Action prototype of the previous week, I managed to organize my week spending some time working on RcppDeepState and the rest of the time improving the existing GitHub Action prototype.

RcppDeepState

I started by doing some improvements to the RcppDeepState’s logs, printing for each function not analyzed, the list of parameters that fall out of the allowed list. I also added a verbose parameter to all the functions that generates some textual output. This option is used to offer more detailed information if set to TRUE.

Additionally, I discovered that RcppDeepState did not execute the analysis of a package containing a function with an argument of type Rcpp::String since this datatype is not one that is supported. To fill this gap, I added a method that creates a random Rcpp::String to the RcppDeepState.h header file.

RcppDeepState Action

On the Action side, I implemented the exit codes allowing the Action to report a fail status if the RcppDeepState’s analysis discovers any issues. If no errors have been detected, the analysis script produces a status code of 0, and if at least one issue has been discovered by RcppDeepState, it returns a status code of 1.

I also extended the Action’s input arguments, providing programmers more flexibility over the RcppDeepState options. The following input parameters have been introduced

  • seed: input parameter that will be used as an input seed for deterministic fuzz testing;
  • time_limit: used to control the time which the fuzzing phase will be run;
  • max_inputs: used to provide a maximum number of inputs to analyze

Reference

Pull requests:

Issues: