Skip to content

Remove a few offenses for ExcessiveCreateList cop

David Dieulivol requested to merge 416899-resolve_some_rubocop_offenses into master

Context

Related to #416899 (closed)

What does this MR do and why?

Fixes a few Rubocop offenses for the RSpec/FactoryBot/ExcessiveCreateList cop.

Performance improvements

  • 32.56 seconds versus 28.24 seconds locally
  • Went from 353 to 182 Factory objects creation

Command we used to measure

FPROF=1 be rspec \
  ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb \
  ee/spec/frontend/fixtures/on_demand_dast_scans.rb \
  ee/spec/graphql/types/dast_scanner_profile_type_spec.rb \
  ee/spec/graphql/types/dast_site_profile_type_spec.rb

Before

[TEST PROF INFO] FactoryProf enabled (simple mode)
Run options: include {:focus=>true}

All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected

Test environment set up in 6.308292 seconds
..........................................Missing metadata feature_category: ./ee/spec/frontend/fixtures/on_demand_dast_scans.rb:32 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/frontend/fixtures/on_demand_dast_scans.rb:65 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/frontend/fixtures/on_demand_dast_scans.rb:79 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
......Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:18 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:19 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:20 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:22 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:23 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:26 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:32 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:38 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:44 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:50 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:58 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:64 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:71 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:77 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:86 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:92 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:100 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:109 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:119 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:178 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:186 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.Missing metadata feature_category: ./ee/spec/graphql/types/dast_site_profile_type_spec.rb:200 See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#feature-category-metadata
.

Finished in 32.56 seconds (files took 14.13 seconds to load)
72 examples, 0 failures

[TEST PROF INFO] Time spent in factories: 00:13.352 (38.19% of total time)
[TEST PROF INFO] Factories usage

 Total: 353
 Total top-level: 244
 Total time: 00:13.352 (out of 00:41.925)
 Total uniq factories: 26

   total   top-level     total time      time per call      top-level time               name

      85          85        1.4085s            0.0166s             1.4085s vulnerability_feedback
      64          55        1.0612s            0.0166s             0.9695s        ci_pipeline
      33           0        1.0432s            0.0316s             0.0000s          dast_site
      33          32        2.1796s            0.0660s             2.1161s  dast_site_profile
      32          31        0.2773s            0.0087s             0.2677s dast_scanner_profile
      26           9        6.1339s            0.2359s             4.0774s            project
      21           0        1.0601s            0.0505s             0.0000s          namespace
      14           9        0.6834s            0.0488s             0.3966s               user
       7           0        0.2113s            0.0302s             0.0000s             author
       4           4        0.0233s            0.0058s             0.0233s            license
       4           4        1.8095s            0.4524s             1.8095s      vulnerability
       3           0        0.3179s            0.1060s             0.0000s              issue
       3           2        1.0427s            0.3476s             0.8064s      merge_request
       3           3        0.9934s            0.3311s             0.9934s vulnerabilities_finding
       3           0        0.3330s            0.1110s             0.0000s vulnerabilities_identifier
       3           0        0.3279s            0.1093s             0.0000s vulnerabilities_scanner
       3           3        0.0237s            0.0079s             0.0237s personal_access_token
       3           0        0.0373s            0.0124s             0.0000s     work_item_type
       2           2        0.0128s            0.0064s             0.0128s security_orchestration_policy_configuration
       1           0        0.0141s            0.0141s             0.0000s namespace_settings
       1           1        0.0079s            0.0079s             0.0079s dast_site_validation
       1           1        0.3071s            0.3071s             0.3071s              group
       1           1        0.0428s            0.0428s             0.0428s    dast_site_token
       1           1        0.0080s            0.0080s             0.0080s dast_site_profile_secret_variable
       1           0        0.0035s            0.0035s             0.0000s namespace_ci_cd_settings
       1           1        0.0822s            0.0822s             0.0822s       dast_profile

After

$ FPROF=1 be rspec \
  ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb \
  ee/spec/frontend/fixtures/on_demand_dast_scans.rb \
  ee/spec/graphql/types/dast_scanner_profile_type_spec.rb \
  ee/spec/graphql/types/dast_site_profile_type_spec.rb
[TEST PROF INFO] FactoryProf enabled (simple mode)
Run options: include {:focus=>true}

All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected

Test environment set up in 6.1079 seconds
...........................................................................

Finished in 28.24 seconds (files took 12.63 seconds to load)
75 examples, 0 failures

[TEST PROF INFO] Time spent in factories: 00:10.095 (33.34% of total time)
[TEST PROF INFO] Factories usage

 Total: 182
 Total top-level: 101
 Total time: 00:10.095 (out of 00:36.728)
 Total uniq factories: 26

   total   top-level     total time      time per call      top-level time               name

      37          28        0.8534s            0.0231s             0.7513s        ci_pipeline
      26           9        6.0834s            0.2340s             4.0413s            project
      25          25        0.9279s            0.0371s             0.9279s vulnerability_feedback
      21           0        0.8002s            0.0381s             0.0000s          namespace
      14           9        0.6058s            0.0433s             0.3618s               user
       7           0        0.2164s            0.0309s             0.0000s             author
       5           4        0.2898s            0.0580s             0.2289s  dast_site_profile
       5           0        0.1524s            0.0305s             0.0000s          dast_site
       4           4        0.0216s            0.0054s             0.0216s            license
       4           4        1.3844s            0.3461s             1.3844s      vulnerability
       4           3        0.1524s            0.0381s             0.1437s dast_scanner_profile
       3           2        0.9491s            0.3164s             0.7121s      merge_request
       3           3        1.0764s            0.3588s             1.0764s vulnerabilities_finding
       3           0        0.3425s            0.1142s             0.0000s vulnerabilities_identifier
       3           0        0.3253s            0.1084s             0.0000s vulnerabilities_scanner
       3           3        0.0222s            0.0074s             0.0222s personal_access_token
       3           0        0.2009s            0.0670s             0.0000s              issue
       3           0        0.0170s            0.0057s             0.0000s     work_item_type
       2           2        0.0126s            0.0063s             0.0126s security_orchestration_policy_configuration
       1           1        0.2803s            0.2803s             0.2803s              group
       1           1        0.0383s            0.0383s             0.0383s    dast_site_token
       1           0        0.0030s            0.0030s             0.0000s namespace_ci_cd_settings
       1           1        0.0062s            0.0062s             0.0062s dast_site_validation
       1           1        0.0079s            0.0079s             0.0079s dast_site_profile_secret_variable
       1           0        0.0136s            0.0136s             0.0000s namespace_settings
       1           1        0.0782s            0.0782s             0.0782s       dast_profile

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by David Dieulivol

Merge request reports