We provide a docker image that contains the script checkers in Vibranium and all the applications we use in the paper. Below are steps to run it and reproduce the experiments on docker.
Pull and run the docker image
- Login to you docker hub account and pull the docker image:
          $ docker pull managedataconstraints/data-constraints-analyzer:first$ docker run -it -p 127.0.0.1:3000:3000 managedataconstraints/data-constraints-analyzer:first
Reproduce experiments in the paper.
- Figure2
          $ cd main278/formatchecker/ $ ruby run_apps.rb --tvaThe output will be stored at the ../log/ouput_#{app_name}.logfile for each corresponding app.The data is also stored in the excel file. 
- Table 4: Data constraints in web applications
          $ ruby run_apps.rb --latest-versionThe data is presented in the excel file under the latest-version #constraintstab.
- 
          Table 5: # Constraints in DB but not in Application Go to the main278/formatchecker/script folder and run:$ ruby run_apps.rb -sExtract the results from the log file: $ grep “db_present_model_absent” log/output.logDetailed data is presented in the excel file. 
- 
          Table 6: # Constraints in Application but not in DB Go to the main278/formatchecker/script folder and run:$ ruby run_apps.rb -sExtract the results from the log file: $ grep “model_present_db_absent” log/output.logDetailed data presented in the excel file. 
- 
          Table 7: Top 5 popular types of different layer Go to the main278/formatchecker/script folder and run:$ ruby run_apps.rb --api-breakdownThis will generate a single log file for each application under log/api_breakdown_#{app_name}.log$ ruby api_breakdown_spread_sheets.rbThe summarized breakdown will be written to output/api_total_breakdown.xlsx. Details presented in the summarytab of the excel file
- 
          Table 8: app versions vs constraint changes Details presented in the constraint-evolutiontab of the excel fileGo to the main278/formatchecker/script folder and run:$ ruby run_apps.rb --tvaThe output will be stored at the ../log/ouput_#{app_name}.logfile for each corresponding app.
- 
          Table 9: Data-constraint issues in real-world apps Raw issues in the issue file Go to the main278/formatchecker/script folder and run:$ cd issues$ python extract_breakdown.pyThe breakdown will be both printed out on the console and stored in the output.xlsxfile.
- 
          Table 10: # Mismatch constraints Details presented in the excel file Go to the main278/formatchecker/script folder and run:$ ruby run_apps.rb -sThen, to extract the results from the log file: $ grep “mismatch_constraint” log/output.log
- 
          User study results can be accessed through google drive or here User study questionnaire can be found here. Both file can be found under the folder main278/user-studyon the docker image.
- 
          The table in the Discussion section of issues in Django 
- 
          Issues we report to developers and their feedback (Section 7) 
- Source Code for better error message gem.
Apply on other applications
- 
          Prepare your application Go to main278/formatchecker/apps/folder, clone your application there.$ git clone git_repo_link app_nameIt’s not required to put the file under th app folder, just for convenience to next step. 
- 
          Run our scripts. Go to main278/formatchecker/constraint_analyzerfolder.$ ruby main.rb -a ../apps/app_name -h