r-lib / lintr

Static Code Analysis for R
https://lintr.r-lib.org
Other
1.2k stars 187 forks source link

Release lintr 3.1.0 #1476

Closed MichaelChirico closed 1 year ago

MichaelChirico commented 2 years ago

I think the fixes we have for our CRAN warnings/errors, as well as the fix for #1405, are enough to warrant a patch release.

So filing this issue (along with the created milestone) for us to earmark some issues/PRs as important enough for inclusion, then we can submit a new release.

Prepare for release:

Submit to CRAN:

Wait for CRAN...

IndrajeetPatil commented 2 years ago

I think the version for this issue should be changed, since 3.0.1 is already under review at CRAN.

Maybe 3.1.0?

MichaelChirico commented 2 years ago

renamed the milestone as 3.0.2 for now. we're free to rename it if we decide for a bump to 3.1

IndrajeetPatil commented 2 years ago

This needs to be bumped again since the latest CRAN is 3.0.2.

jimhester commented 2 years ago

Since there are new features and linters in this release I think it should probably be 3.1.0

IndrajeetPatil commented 1 year ago

Shouldn't we make a new release soon? There is a lot of new functionality already that users can immediately benefit from.

MichaelChirico commented 1 year ago

Yes, I think we're about due...

IndrajeetPatil commented 1 year ago

This year's winter break will be from Dec 22, 2022 to Jan 5, 2023.

The submission portal will be closed in this time window, so we need to plan a release either before or after.

AshesITR commented 1 year ago

Except for #1137, we have PRs for all open issues. If you find time to review in the coming days, I'd favor going for a 3.1.0 release this year.

MichaelChirico commented 1 year ago

I'm leaning towards bumping #1137 to the next release, anyone keen to keep it?

jimhester commented 1 year ago

I think for #1137 we just need to add documentation to the object_usage_linter stating that the package being linted should be installed before linting. Right?

AshesITR commented 1 year ago

I'm quite sure pkgload::load_all() is sufficient - no need to actually install the package. But yes, finding out the actual requirement and documenting it is what needs doing.

MichaelChirico commented 1 year ago

finding out the actual requirement

This is the part that has me leaning towards bumping :)

FWIW the documentation should all go on the executing documentation page:

https://lintr.r-lib.org/reference/executing_linters.html

may need dependencies of the linted package or project to be available in order to function correctly.

is a bit short on details

IndrajeetPatil commented 1 year ago

My two cents: We should delay this release until indentation_linter() issues (#1898, #1942, #1944, #1945) are resolved.

This is one of the default linters, and we will get a number of false positive issues, especially one stemming from a conflict with {styler} (#1898).

E.g. I had to turn off this linter in easystats repos because maintainers had started to manually format code to pacify this linter, and these changes were, of course, undone once {styler} was run, which caused a lot of frustration.

AshesITR commented 1 year ago

I agree #1898 should be resolved before release; for the other ones, #1942 and #1944 are also present in styler at this moment, so no real hurry IMO. #1945 is caused by our less than ideal way of extracting code from markup files (Rmd, but Rtex also - see #1043) and seems more complex to solve in a timely manner.

MichaelChirico commented 1 year ago

I have at least an expedient solution to #1945 in #1949, so I added both #1898 and #1945 to the milestone. If we think indentation_linter() is still not ready for the limelight, we can keep it out of default_linters for this release.

I think what makes sense is to do our usual release procedure of checking the change in lints on a swath of existing packages; that'll help us get a sense of how crucial these other fixes may be.

MichaelChirico commented 1 year ago

Did an initial branch comparison for current (9038957aaf2c89d16efad45e63c5127c37e5ebb9) main vs v3.0.2, 238 updated CRAN packages. I'll have more time to look into it next week, but for now here's an initial benchmark timing comparison:

timings = fread('.dev/lintr_compare_branches_1681201833_benchmark_timings.csv')
timings[,
  dcast(.SD, linter + package +filename ~ branch, value.var = "duration")
][,
  as.list(summary(main - `v3.0.2`)),
  keyby = linter
][!is.na(Min.)][order(Median)]

With output:

                              linter       Min.  1st Qu. Median        Mean 3rd Qu.      Max. NA's
 1:              class_equals_linter  -36783868 -68502.0 -20834  -34288.294 -2806.0  26703471   19
 2:                     brace_linter  -33150684 -82361.5 -18430  -61792.386 -1717.0  22549892   19
 3:                assignment_linter  -28792446 -70317.5 -16175    1598.236  -306.0  45389365   19
 4:                 any_is_na_linter  -37543040 -57646.0 -14575  -30435.523  -118.0  41851010   19
 5:            any_duplicated_linter  -33127465 -58808.5 -14324   -8201.699  -580.5  28802778   19
 6:                    commas_linter  -22710515 -48377.0 -11115    5371.820   719.0  55770472   19
 7:                  backport_linter -927124449 -50356.5 -10763 -217861.138  2401.0  28768415   19
 8:          nonportable_path_linter  -31722140 -49271.0 -10135   -2234.254  4863.0  74730180   19
 9:             absolute_path_linter -982564195 -42806.5  -7806 -228508.756  8765.5  28499929   19
10:            T_and_F_symbol_linter  -75284464 -40949.0  -5499  -12476.287 14149.0  28798908   19
11:                 semicolon_linter  -36461503 -41266.5  -5268   32123.680  9283.0  76699221   19
12:        strings_as_factors_linter   -2754522 -36012.0  -3541   39084.070 17448.0  32960656   19
13:                   sprintf_linter  -27860109 -29757.0  -2742   30714.642 18987.0  27484671   19
14:               line_length_linter  -39439039 -34658.5  -2051    8116.320 17582.5  29257613   19
15:       trailing_whitespace_linter  -84376891 -30259.5  -1736   14164.661 26939.0  29814570   19
16:                     paste_linter  -42157095 -23993.5  -1669   21043.005 17449.5  23017225   19
17:      undesirable_function_linter   -1357899 -27035.0  -1228   51881.689 21324.5  26615917   19
18:           string_boundary_linter  -33921112 -22984.0  -1172   40010.569 27651.5  25655985   19
19:             expect_length_linter  -35514669 -27044.0  -1030   55021.962 29433.5  28452482   19
20:          unreachable_code_linter   -1790402 -29913.0   -917   48981.988 26220.0  35667644   19
21:              expect_named_linter  -33982258 -23061.5   -903   15412.968 29691.5  21682192   19
22:      trailing_blank_lines_linter  -29492147 -20782.0   -864   31505.268 22124.5  47261457   19
23:              todo_comment_linter  -35942509 -19571.5   -817   52546.778 22808.5  29848601   19
24:            outer_negation_linter  -35982530 -24365.5   -764   55259.895 28006.0  54675278   19
25:              infix_spaces_linter  -32365995 -32739.0   -594   37882.881 19285.0  53814057   19
26:              regex_subset_linter  -35774928 -19219.5   -352   33949.592 35008.5  29502569   19
27:         expect_comparison_linter   -3804610 -22783.5   -334   51896.686 34210.0  21656520   19
28:                 pipe_call_linter  -86300779 -22225.0    -42   11011.678 31617.5  24120185   19
29:             ifelse_censor_linter  -36406426 -18548.5     41   45148.682 31151.0  46638980   19
30:             unused_import_linter  -30253379 -22755.0     92   43086.175 27676.0  61826606   19
31:      undesirable_operator_linter  -51690842 -22302.5    145   19324.961 32206.0  53204350   19
32:       extraction_operator_linter  -28585962 -19459.0    429   40947.324 28824.0  22830398   19
33:          implicit_integer_linter  -32016734 -28182.5    498   60083.874 24346.0  58839942   19
34:                paren_body_linter  -32709438 -16249.5    522   57338.872 24699.0  29005139   19
35:             package_hooks_linter  -31079569 -16172.0    580   43019.157 31349.0  32141189   19
36:               expect_type_linter  -34413137 -17503.5    584  227136.088 28490.0 564096761   19
37:           missing_package_linter  -33300732 -18945.0    797   66046.847 32427.5  74071245   19
38:          literal_coercion_linter  -26120131 -20029.0    836   48710.599 31279.0  27033212   19
39:                expect_not_linter  -59481007 -14478.5    851   45981.435 34933.0  75000635   19
40:         function_argument_linter  -30455119 -23090.5    920   38979.555 31239.0  29997240   19
41:      numeric_leading_zero_linter  -26838098 -18141.0    970   50856.224 33146.0  25421900   19
42:                 namespace_linter  -28322228 -17090.0   1146   85339.960 34693.5  78136405   19
43:               expect_null_linter  -36059897 -14623.0   1194   41566.377 35455.0  33303988   19
44:            commented_code_linter  -38534457 -15655.0   1260   30217.898 28164.5  29434585   19
45: function_left_parentheses_linter  -37535318 -19907.0   1345   55705.946 27847.0  53868964   19
46:         condition_message_linter  -56028112 -16020.0   1414   62277.619 36221.0  31529737   19
47:         pipe_continuation_linter  -34952091 -16661.0   1431   39728.141 35378.5  62034854   19
48:               system_file_linter  -28847717 -13754.0   1575   67274.032 36461.0  81118816   19
49:               fixed_regex_linter  -32416557 -13105.0   1664   40993.715 29930.5  28292547   19
50:             object_length_linter  -33409115 -14926.0   1705    5900.898 31751.0  22601189   19
51:               object_name_linter  -22505184 -17267.5   1759   52409.613 35628.0  43479506   19
52:                       seq_linter  -27908704 -13622.0   1787   45040.907 35854.5  44447373   19
53:             conjunct_test_linter  -58179500 -17898.0   1859   44379.851 42995.5  28672088   19
54:             inner_combine_linter -831076731 -16920.5   1975 -122962.927 33074.0  87604415   19
55:          expect_identical_linter  -30523393 -18496.5   1998   42253.530 37460.5  24642773   19
56:           expect_s3_class_linter  -35949289 -11368.0   2146   76565.877 34406.0  47804790   19
57:          missing_argument_linter   -1006227 -12249.0   2208   82494.644 38715.0  28366507   19
58:              object_usage_linter  -33392274 -12088.0   2315   76699.484 37538.5  42913537   19
59:             nested_ifelse_linter  -27016303 -10151.0   2711   54655.630 42934.5  18292539   19
60:           expect_s4_class_linter  -32329753  -8633.0   2818   71051.009 36407.5  31860228   19
61:         expect_true_false_linter  -35823160  -8572.0   2962   55265.001 37950.0  33434207   19
62:          redundant_ifelse_linter  -33701530  -8159.5   4216   51021.420 48558.0  18660926   19
63:              vector_logic_linter  -34136594  -9778.5   4581   82595.692 43232.0  29411644   19
64:                 cyclocomp_linter  -32653514  -9734.5   4596   57243.711 68406.5  17410667   19
65:             spaces_inside_linter  -32526354  -4290.0   5109   61476.311 52013.0  29138003   19
66:   spaces_left_parentheses_linter  -52980448  -4906.5   5303   22180.316 49144.0  29735499   19
67:                 yoda_test_linter  -33179754  -6491.5   7172   34977.563 47189.0  46294975   19
68:        duplicate_argument_linter  -28134634  -5026.0   9243  125521.428 56787.5  40368116   19
69:                 equals_na_linter    -638524  -1981.5  12575  119356.984 82052.0  27954876   19
                              linter       Min.  1st Qu. Median        Mean 3rd Qu.      Max. NA's

Units are nanoseconds and all of the Q1-Q3 ranges contain 0, so I don't think much has changed w.r.t. performance.

(caveat: !is.na(Min.) drops new linters but also renamed linters, I need to come up with a mapping for those)

Thos 19 NAs are the files from {mapmisc}, I believe it must throw an error on v3.0.2.

MichaelChirico commented 1 year ago

Some more quick takeaways (re-ran as of 2b06c52109729c15931dc820580d273acb5c86d7 on 700 packages)

  1. The fixes to fixed_regex_linter() help about 0.3% of packages ({kableExtra} and {remedy} in this case)
  2. Count of lints for each version:
                              linter v3.0.2 v3.1.0 delta
 2:            T_and_F_symbol_linter   5261   5685   424
 3:             absolute_path_linter    178    206    28
 4:            any_duplicated_linter     70     70     0
 5:                 any_is_na_linter    417    417     0
 6:                assignment_linter  18012  18086    74
 7:        boolean_arithmetic_linter      0    140   140
 8:                     brace_linter  23097  23060   -37
 9:              class_equals_linter    421    434    13
10:                    commas_linter  79189  79640   451
11:            commented_code_linter   8655   8751    96
12:         condition_message_linter   1148   1149     1
13:             conjunct_test_linter     42     42     0
14:     consecutive_assertion_linter    153    269   116
15:                 cyclocomp_linter   1146   1159    13
16:        duplicate_argument_linter    114     89   -25
17:          empty_assignment_linter      0      2     2
18:                            error     36     32    -4
19:         expect_comparison_linter    409    409     0
20:          expect_identical_linter   4587   4668    81
21:             expect_length_linter    356    356     0
22:              expect_named_linter    133    133     0
23:                expect_not_linter     69     69     0
24:               expect_null_linter     56     56     0
25:           expect_s3_class_linter    185    185     0
26:           expect_s4_class_linter    258    258     0
27:         expect_true_false_linter    212    212     0
28:               expect_type_linter     66     66     0
29:       extraction_operator_linter  84972  86172  1200
30:               fixed_regex_linter   1011   1125   114
31:            for_loop_index_linter      0      9     9
32:         function_argument_linter    769    801    32
33: function_left_parentheses_linter   4230   4252    22
34:             ifelse_censor_linter     27     27     0
35:       implicit_assignment_linter      0    722   722
36:          implicit_integer_linter 193273 195127  1854
37:               indentation_linter      0  78609 78609
38:              infix_spaces_linter 138677 139080   403
39:             inner_combine_linter     54     55     1
40:                is_numeric_linter      0      1     1
41:                   lengths_linter      0     98    98
42:               line_length_linter  46050  46352   302
43:          literal_coercion_linter    992    992     0
44:              matrix_apply_linter      0    367   367
45:          missing_argument_linter    186    186     0
46:           missing_package_linter   1815   1828    13
47:                 namespace_linter   1500   1510    10
48:             nested_ifelse_linter     93     93     0
49:          nonportable_path_linter   2212   2254    42
50:      numeric_leading_zero_linter   4567   4568     1
51:             object_length_linter    443    488    45
52:               object_name_linter  61446  61187  -259
53:              object_usage_linter  23080  22937  -143
54:            outer_negation_linter    164    164     0
55:             package_hooks_linter      6      6     0
56:                paren_body_linter   7786   7844    58
57:                     paste_linter   2011   2106    95
58:                 pipe_call_linter     84     84     0
59:         pipe_continuation_linter     68     68     0
60:                    quotes_linter  23888  24490   602
61:          redundant_equals_linter      0   1492  1492
62:          redundant_ifelse_linter    117    117     0
63:              regex_subset_linter     30     30     0
64:      routine_registration_linter      0    416   416
65:                 semicolon_linter  10476  10476     0
66:                       seq_linter   2362   2401    39
67:                      sort_linter      0     14    14
68:             spaces_inside_linter  12125  12429   304
69:   spaces_left_parentheses_linter  20180  20222    42
70:                   sprintf_linter      4      6     2
71:           string_boundary_linter    126    129     3
72:        strings_as_factors_linter    241    293    52
73:               system_file_linter     13     13     0
74:              todo_comment_linter    356    356     0
75:      trailing_blank_lines_linter   2088   2121    33
76:       trailing_whitespace_linter  36897  37761   864
77:      undesirable_function_linter   6759   6836    77
78:      undesirable_operator_linter   1357   1363     6
79: unnecessary_concatenation_linter   4535   4557    22
80:        unnecessary_lambda_linter      0    174   174
81:     unnecessary_nested_if_linter      0    581   581
82:   unnecessary_placeholder_linter      0     24    24
83:          unreachable_code_linter     41     41     0
84:             unused_import_linter    199    185   -14
85:              vector_logic_linter   1972   2003    31
86:                whitespace_linter  63885  63885     0
87:                 yoda_test_linter    375    375     0
                              linter v3.0.2 v3.1.0 delta
  1. Summary of where lints only appear on main:
                              linter    N
 1:          implicit_integer_linter 1904
 2:       extraction_operator_linter 1202
 3:       trailing_whitespace_linter  888
 4:               object_name_linter  676
 5:                    quotes_linter  602
 6:              object_usage_linter  537
 7:                    commas_linter  451
 8:            T_and_F_symbol_linter  424
 9:              infix_spaces_linter  403
10:             spaces_inside_linter  304
11:               line_length_linter  302
12:               fixed_regex_linter  116
13:     consecutive_assertion_linter  116
14:            commented_code_linter   96
15:                     paste_linter   95
16:                     brace_linter   83
17:          expect_identical_linter   81
18:      undesirable_function_linter   77
19:                assignment_linter   74
20:                paren_body_linter   58
21:        strings_as_factors_linter   52
22:             object_length_linter   50
23:          nonportable_path_linter   44
24:   spaces_left_parentheses_linter   42
25:                       seq_linter   39
26:      trailing_blank_lines_linter   33
27:         function_argument_linter   32
28:              vector_logic_linter   31
29:             absolute_path_linter   28
30: function_left_parentheses_linter   23
31:                 namespace_linter   23
32: unnecessary_concatenation_linter   22
33:                      sort_linter   14
34:           missing_package_linter   13
35:                 cyclocomp_linter   13
36:              class_equals_linter   13
37:      undesirable_operator_linter    6
38:           string_boundary_linter    3
39:                   sprintf_linter    2
40:         condition_message_linter    1
41:      numeric_leading_zero_linter    1
42:             inner_combine_linter    1
                              linter    N
  1. Summary of where lints only appear on v3.0.2:
                              linter      N
 1:          implicit_integer_linter 193273
 2:              infix_spaces_linter 138677
 3:       extraction_operator_linter  84972
 4:                    commas_linter  79189
 5:                whitespace_linter  63840
 6:               object_name_linter  61446
 7:               line_length_linter  46050
 8:       trailing_whitespace_linter  36897
 9:                    quotes_linter  23888
10:                     brace_linter  22250
11:              object_usage_linter  21367
12:   spaces_left_parentheses_linter  20180
13:                assignment_linter  18012
14:             spaces_inside_linter  12120
15:                 semicolon_linter  10476
16:            commented_code_linter   8655
17:                paren_body_linter   7786
18:      undesirable_function_linter   6759
19:            T_and_F_symbol_linter   5261
20:          expect_identical_linter   4587
21:      numeric_leading_zero_linter   4567
22: unnecessary_concatenation_linter   4535
23: function_left_parentheses_linter   4230
24:                       seq_linter   2362
25:          nonportable_path_linter   2212
26:      trailing_blank_lines_linter   2088
27:                     paste_linter   2011
28:              vector_logic_linter   1972
29:           missing_package_linter   1815
30:                 namespace_linter   1500
31:      undesirable_operator_linter   1357
32:         condition_message_linter   1148
33:                 cyclocomp_linter   1146
34:               fixed_regex_linter   1011
35:          literal_coercion_linter    992
36:         function_argument_linter    769
37:             object_length_linter    443
38:              class_equals_linter    421
39:                 any_is_na_linter    417
40:         expect_comparison_linter    409
41:                 yoda_test_linter    375
42:              todo_comment_linter    356
43:             expect_length_linter    356
44:           expect_s4_class_linter    258
45:        strings_as_factors_linter    241
46:         expect_true_false_linter    212
47:             unused_import_linter    199
48:          missing_argument_linter    186
49:           expect_s3_class_linter    185
50:             absolute_path_linter    178
51:            outer_negation_linter    164
52:     consecutive_assertion_linter    153
53:              expect_named_linter    133
54:           string_boundary_linter    126
55:          redundant_ifelse_linter    117
56:        duplicate_argument_linter    114
57:             nested_ifelse_linter     93
58:                 pipe_call_linter     84
59:            any_duplicated_linter     70
60:                expect_not_linter     69
61:         pipe_continuation_linter     68
62:               expect_type_linter     66
63:               expect_null_linter     56
64:             inner_combine_linter     54
65:             conjunct_test_linter     42
66:          unreachable_code_linter     41
67:                            error     36
68:              regex_subset_linter     30
69:             ifelse_censor_linter     27
70:               system_file_linter     13
71:             package_hooks_linter      6
72:                   sprintf_linter      4
                              linter      N

Just dumping this for now, plan to look into more later. Feel free to highlight anything worth inspecting further. (I'd share the results CSV but it's 1.9M rows / 142MiB in memory)

```r lints = fread('.dev/lintr_compare_branches_1681227308.csv') lints[, source := fifelse(source == "branch", "v3.0.2", "v3.1.0")] key_cols <- c("source", "package", "filename", "line_number", "column_number", "linter") lints = unique(lints, by = key_cols) # Mapping old to new lints: mapping <- c( single_quotes_linter = "quotes_linter", unneeded_concatenation_linter = "unnecessary_concatenation_linter", consecutive_stopifnot_linter = "consecutive_assertion_linter", no_tab_linter = "whitespace_linter", NULL ) new_linters <- c( "matrix_apply_linter", "unnecessary_lambda_linter", "redundant_equals_linter", "lengths_linter", "function_return_linter", "boolean_arithmetic_linter", "for_loop_index_linter", "is_numeric_linter", "empty_assignment_linter", "unnecessary_placeholder_linter", "routine_registration_linter", "indentation_linter", "unnecessary_nested_if_linter", "implicit_assignment_linter", NULL ) lints[source == "v3.0.2" & linter %chin% names(mapping), linter := mapping[linter]] # packages throwing errors on v3.0.2 lints[source == "v3.0.2" & !nzchar(linter), .(package, message)] lints = lints[nzchar(linter)] setkeyv(lints, key_cols) # count of lints per linter by version dcast(lints, linter ~ source, fun.aggregate = length)[, delta := `v3.1.0` - `v3.0.2`][] old_only = lints[.("v3.0.2")][!lints[.("v3.0.1")], on = key_cols[-1]] new_only = lints[.("v3.1.0")][!lints[.("v3.0.2")], on = key_cols[-1]][!linter %chin% new_linters] ```
AshesITR commented 1 year ago

Thanks for the analyses. Table 4 seems wrong, looking at the count for implicit_integer_linter. I'd expect it to be on the order of 1000s, not 193273 -- incidentally the total count for v3.0.2

eitsupi commented 1 year ago

Any update on this?

MichaelChirico commented 1 year ago

I'll have more time to look into it next week

narrator: he did not have more time :smile:

1982 fixes the last issue I wanted to check before release. I am happy to move forward after that's merged.

MichaelChirico commented 1 year ago

I ran the initial steps in the release procedure, now working on two new ones.

First, here's the output of .dev/revdep_compare_releases:

The following packages warned on main only: 
  admiral, BiasCorrector, bupaR, cattonum, designer, dittodb, DQAgui, dupree, emayili, healthcareai, languageserver, latrend, mlrCPO, rBiasCorrection, rextendr, rhino, supernova, WoodburyMatrix

The following packages warned on v3.0.2 only: 

The following packages warned on both branches: 
  abbyyR, admiralophtha, admiralvaccine, BTYDplus, cleaR, crunch, dampack, dashboardthemes, DBItest, DepthProc, diffusr, DIZtools, DIZutils, dyn.log, edgarWebR, epigraphdb, fixtuRes, FSelectorRcpp, geofacet, geogrid, ggcharts, ggthemes, jpmesh, mlflow, mlr, modules, openbankeR, opensensmapr, osfr, packager, physiology, prettyB, PWFSLSmoke, rbokeh, requiRements, RestRserve, RSQL, scriptexec, stencilaschema, tsviz, tuber, upsetjs, virustotal, WikidataQueryServiceR

The following packages failed on main only: 
  datastructures.failure: object 'absolute_paths_linter' not found
  DepthProc.failure: object 'absolute_paths_linter' not found
  diffusr.failure: `fun` must be a function taking exactly one argument.
  tuber.failure: `defaults` must be a named list.
The following packages failed on v3.0.2 only: 
  bupaR.failure: Expecting '}'
  dashboardthemes.failure: the condition has length > 1
  dyn.log.failure: unused argument (expr)
  openbankeR.failure: the condition has length > 1
The following packages failed on both branches:
  abbyyR, DBItest, geofacet, geogrid, opensensmapr, rbokeh, RestRserve, roadoi, virustotal

Count of lints found on main but not on v3.0.2: 37894
Count of these by linter:
                  linter     N
 1:   indentation_linter 37664
 2:        quotes_linter   153
 3:  infix_spaces_linter    36
 4:  object_usage_linter    25
 5:   line_length_linter     6
 6:     semicolon_linter     3
 7:         brace_linter     2
 8:    paren_body_linter     2
 9: object_length_linter     1
10:    assignment_linter     1
11:  vector_logic_linter     1
Sample of <=10 hits from each linter:
                                                                                                                            line
 1:                                                                                           expect_error( [indentation_linter]
 2:                                                    expect_true(file.remove(paste0(prefix, "/log.txt"))) [indentation_linter]
 3:                                                                                                      }) [indentation_linter]
 4:                                                                                                       ) [indentation_linter]
 5:                                                                                                      }) [indentation_linter]
 6:                                                                                   cd("Project One") %>% [indentation_linter]
 7:                                                                  lines <- attr(srcref, "srcfile")$lines [indentation_linter]
 8:                                                                    test_that("datetime rollup cubes", { [indentation_linter]
 9:                                                           list(create_rln_clock_model(mparam_id = 42)), [indentation_linter]
10:                                                                                                      ), [indentation_linter]
11:                                                                                         ui <- tagList( [object_usage_linter]
12:                           page_html <- CanvasModuleServer("canvas", selected_template = template_html) [object_usage_linter]
13:                                    make_option(c("-b", "--blastfile"), type="character", default=NULL, [object_usage_linter]
14:                                                                   allnames <- unique(unlist(subnames)) [object_usage_linter]
15:                                    make_option(c("-b", "--blastfile"), type="character", default=NULL, [object_usage_linter]
16:                                                                         opt <- parse_args(opt_parser); [object_usage_linter]
17:                                                   opt_parser <- OptionParser(option_list=option_list); [object_usage_linter]
18:                                                      varnames <- vapply(variables, name, character(1)) [object_usage_linter]
19:                                                                                     keep.going <- TRUE [object_usage_linter]
20:                                                                                                 i <- 1 [object_usage_linter]
21:                                                             signature(a = 'SWoodburyMatrix', b = 'missing'), [quotes_linter]
22:                                           doc <- docs[docs$description == 'Complete submission text file', ] [quotes_linter]
23:                                                                                          plot(Y, type = 'l') [quotes_linter]
24:                                                                 signature(a = 'GWoodburyMatrix', b = 'ANY'), [quotes_linter]
25:                                                     expect_is(WoodburyMatrix(M_ss, M_ss), 'SWoodburyMatrix') [quotes_linter]
26:                                                                                    setGeneric('mahalanobis') [quotes_linter]
27:                                                                                 'B and V are not compatible' [quotes_linter]
28:                                                                                    c(x = 'SWoodburyMatrix'), [quotes_linter]
29:                                                                               context('normal distribution') [quotes_linter]
30:                                                                               c(object = 'GWoodburyMatrix'), [quotes_linter]
31:                                  make_option(c("-o", "--outfile"), type="character", default="P2Run_", [infix_spaces_linter]
32:                                 make_option(c("-C", "--combineincs"), action="store_true", default=NA, [infix_spaces_linter]
33:                          make_option(c("-t", "--title"), type="character", default="Plasmid Profiles", [infix_spaces_linter]
34:                                      help="Title of image [default = %default]", metavar="character"), [infix_spaces_linter]
35:                                    make_option(c("-s", "--srst2file"), type="character", default=NULL, [infix_spaces_linter]
36:                                    make_option(c("-s", "--srst2file"), type="character", default=NULL, [infix_spaces_linter]
37:                                           make_option(c("-l", "--length"), type="numeric", default=NA, [infix_spaces_linter]
38:                                                      help="BLAST TSV file name", metavar="character"), [infix_spaces_linter]
39:                              help="Output filename prefix [default=  %default]", metavar="character"), [infix_spaces_linter]
40:                                 make_option(c("-C", "--combineincs"), action="store_true", default=NA, [infix_spaces_linter]
41:                               help="Output filename prefix [default=  %default]", metavar="character"), [line_length_linter]
42:                                       help="Combine very closely related incompatibility groups. eg. ") [line_length_linter]
43: #' Rscript plasmidprofile.R -b blast_runG.tsv -s srst2_runG.tsv -u 0.75 -l 10000 -t "This is a test" -a [line_length_linter]
44:                           make_option(c("-t", "--title"), type="character", default="Plasmid Profiles", [line_length_linter]
45:                                       help="Title of image [default = %default]", metavar="character"), [line_length_linter]
46:                                       help="Sureness cut off [default = %default]", metavar="numeric"), [line_length_linter]
47:                                                      opt_parser <- OptionParser(option_list=option_list); [semicolon_linter]
48:                                                                                                        ); [semicolon_linter]
49:                                                                            opt <- parse_args(opt_parser); [semicolon_linter]
50:                                                  if (is.null(opt$blastfile) | is.null(opt$srst2file)){ [vector_logic_linter]
51:                                                                                      option_list = list( [assignment_linter]
52:                                                                              cl_arguments <- function(){ [paren_body_linter]
53:                                                    if (is.null(opt$blastfile) | is.null(opt$srst2file)){ [paren_body_linter]
54:                                       .cb_get_phenotype_statistics_v1 <- function(cohort, pheno_id) { [object_length_linter]
55:                                                                                   cl_arguments <- function(){ [brace_linter]
56:                                                         if (is.null(opt$blastfile) | is.null(opt$srst2file)){ [brace_linter]
                                                                                                                            line
                                                    location
 1:          crunch:tests/testthat/test-combine-categories.R
 2:              rBiasCorrection:tests/testthat/test-utils.R
 3:                            crunch:R/combine-categories.R
 4:                                       crunch:R/filters.R
 5:      crunch:tests/testthat/test-subtotals-and-headings.R
 6:              crunch:tests/testthat/test-project-folder.R
 7:                              languageserver:R/document.R
 8:                       crunch:tests/testthat/test-cubes.R
 9:         beautier:tests/testthat/test-init_clock_models.R
10:   crunch:tests/testthat/test-cube-residuals-zed-scores.R
11:                                      designer:R/app_ui.R
12:                                  designer:R/app_server.R
13:                    Plasmidprofiler:exec/plasmidprofile.R
14:                                    crunch:R/make-array.R
15:                    Plasmidprofiler:exec/plasmidprofile.R
16:                    Plasmidprofiler:exec/plasmidprofile.R
17:                    Plasmidprofiler:exec/plasmidprofile.R
18:                                    crunch:R/make-array.R
19:                                     crunch:R/as-vector.R
20:                                     crunch:R/as-vector.R
21:                                 WoodburyMatrix:R/solve.R
22:                          edgarWebR:vignettes/parsing.Rmd
23:              WoodburyMatrix:vignettes/WoodburyMatrix.Rmd
24:                                 WoodburyMatrix:R/solve.R
25:      WoodburyMatrix:tests/testthat/test-WoodburyMatrix.R
26:                           WoodburyMatrix:R/mahalanobis.R
27:                              WoodburyMatrix:R/validity.R
28:                            WoodburyMatrix:R/matrix-ops.R
29: WoodburyMatrix:tests/testthat/test-normal-distribution.R
30:                          WoodburyMatrix:R/is-symmetric.R
31:                    Plasmidprofiler:exec/plasmidprofile.R
32:                    Plasmidprofiler:exec/plasmidprofile.R
33:                    Plasmidprofiler:exec/plasmidprofile.R
34:                    Plasmidprofiler:exec/plasmidprofile.R
35:                    Plasmidprofiler:exec/plasmidprofile.R
36:                    Plasmidprofiler:exec/plasmidprofile.R
37:                    Plasmidprofiler:exec/plasmidprofile.R
38:                    Plasmidprofiler:exec/plasmidprofile.R
39:                    Plasmidprofiler:exec/plasmidprofile.R
40:                    Plasmidprofiler:exec/plasmidprofile.R
41:                    Plasmidprofiler:exec/plasmidprofile.R
42:                    Plasmidprofiler:exec/plasmidprofile.R
43:                    Plasmidprofiler:exec/plasmidprofile.R
44:                    Plasmidprofiler:exec/plasmidprofile.R
45:                    Plasmidprofiler:exec/plasmidprofile.R
46:                    Plasmidprofiler:exec/plasmidprofile.R
47:                    Plasmidprofiler:exec/plasmidprofile.R
48:                    Plasmidprofiler:exec/plasmidprofile.R
49:                    Plasmidprofiler:exec/plasmidprofile.R
50:                    Plasmidprofiler:exec/plasmidprofile.R
51:                    Plasmidprofiler:exec/plasmidprofile.R
52:                    Plasmidprofiler:exec/plasmidprofile.R
53:                    Plasmidprofiler:exec/plasmidprofile.R
54:                            cloudos:R/cb_filter_explore.R
55:                    Plasmidprofiler:exec/plasmidprofile.R
56:                    Plasmidprofiler:exec/plasmidprofile.R
                                                    location
Count of lints found on v3.0.2 but not on main: 1082
Count of these by linter:
                 linter   N
1:   object_name_linter 682
2: object_length_linter 180
3:  object_usage_linter 153
4:         brace_linter  67
Sample of <=10 hits from each linter:
                                                                                                                       line
 1:                    predictLearner.classif.plsdaCaret = function(.learner, .model, .newdata, ...) { [object_name_linter]
 2:                          predictLearner.regr.cforest = function(.learner, .model, .newdata, ...) { [object_name_linter]
 3:                 trainLearner.regr.gbm = function(.learner, .task, .subset, .weights = NULL, ...) { [object_name_linter]
 4:             trainLearner.CostSensClassifWrapper = function(.learner, .task, .subset = NULL, ...) { [object_name_linter]
 5:                                                           makeRLearner.surv.cforest = function() { [object_name_linter]
 6:                    getFeatureImportanceLearner.classif.h2o.gbm = function(.learner, .model, ...) { [object_name_linter]
 7:             trainLearner.classif.PART = function(.learner, .task, .subset, .weights = NULL, ...) { [object_name_linter]
 8:                 predictLearner.regr.LiblineaRL2L1SVR = function(.learner, .model, .newdata, ...) { [object_name_linter]
 9:                                                        makeRLearner.classif.h2o.gbm = function() { [object_name_linter]
10:                                  setPredictType.StackedLearner = function(learner, predict.type) { [object_name_linter]
11:                                             function(.learner, .task, .subset, .weights = NULL, ...) { } [brace_linter]
12:                                                                                         cpo.trafo = { }) [brace_linter]
13:                                                    moduleServer(id, function(input, output, session) {}) [brace_linter]
14:                                                                      cpo.trafo = { }, cpo.retrafo = { }) [brace_linter]
15:                                                                build = function(script, prop, debug) {}, [brace_linter]
16:                                                    moduleServer(id, function(input, output, session) {}) [brace_linter]
17:                                                            server <- function(input, output, session) {} [brace_linter]
18:                                                            function(.learner, .model, .newdata, ...) { } [brace_linter]
19:                                       cpo.trafo = { }),  "<function> is not feasible for parameter 'a'") [brace_linter]
20:                                                    moduleServer(id, function(input, output, session) {}) [brace_linter]
21:  trainLearner.regr.LiblineaRL2L2SVR = function(.learner, .task, .subset, .weights = NULL, ...) { [object_length_linter]
22:                                                   makeRLearner.classif.naiveBayes = function() { [object_length_linter]
23:                predictLearner.cluster.SimpleKMeans = function(.learner, .model, .newdata, ...) { [object_length_linter]
24: generateThreshVsPerfData.Prediction = function(obj, measures, gridsize = 100L, aggregate = TRUE, [object_length_linter]
25:               predictLearner.cluster.FarthestFirst = function(.learner, .model, .newdata, ...) { [object_length_linter]
26:                      getFeatureImportanceLearner.surv.ranger = function(.learner, .model, ...) { [object_length_linter]
27:                                                   makeRLearner.classif.adaboostm1 = function() { [object_length_linter]
28:  trainLearner.regr.h2o.deeplearning = function(.learner, .task, .subset, .weights = NULL, ...) { [object_length_linter]
29:                    predictLearner.classif.gamboost = function(.learner, .model, .newdata, ...) { [object_length_linter]
30:                      getFeatureImportanceLearner.classif.RRF = function(.learner, .model, ...) { [object_length_linter]
31:                                                   appServer <- function(input, output, session) { [object_usage_linter]
32:                                                    r_HD = r_HD, hr_S1D = hr_S1D, hr_S2D = hr_S2D, [object_usage_linter]
33:                                 v_state_cost <- c("H" = c_H, "S1" = c_S1, "S2" = c_S2, "D" = c_D) [object_usage_linter]
34:                                                                 ellipse(cor(Effectiveness, Cost), [object_usage_linter]
35:                                                  u_H =  u_H, u_S1 = u_S2, u_S2 = u_S1, u_D = u_D, [object_usage_linter]
36:                                                                     threshold_min = threshold[1], [object_usage_linter]
37:                                                       CodeModuleServer <- function(id, ui_code) { [object_usage_linter]
38:                l_params_markov <- list(n_cycles = n_cycles, r_disc = r_disc, v_s_init = v_s_init, [object_usage_linter]
39:                                                                                            p = p, [object_usage_linter]
40:                                                  c_H =  c_H, c_S1 = c_S2, c_S2 = c_S1, c_D = c_D, [object_usage_linter]
                                                                                                                       line
                                        location
 1:          mlr:R/RLearner_classif_plsdaCaret.R
 2:                mlr:R/RLearner_regr_cforest.R
 3:                    mlr:R/RLearner_regr_gbm.R
 4:               mlr:R/CostSensClassifWrapper.R
 5:                mlr:R/RLearner_surv_cforest.R
 6:              mlr:R/RLearner_classif_h2ogbm.R
 7:                mlr:R/RLearner_classif_PART.R
 8:       mlr:R/RLearner_regr_LiblineaRL2L1SVR.R
 9:              mlr:R/RLearner_classif_h2ogbm.R
10:                       mlr:R/StackedLearner.R
11:    mlr:vignettes/tutorial/create_learner.Rmd
12:      mlrCPO:tests/testthat/test_core_basic.R
13:  shiny.blueprint:inst/examples/ButtonGroup.R
14:      mlrCPO:tests/testthat/test_core_basic.R
15:        unifir:vignettes/unifir-dev-guide.Rmd
16:    shiny.blueprint:inst/examples/FormGroup.R
17:           shiny.semantic:vignettes/intro.Rmd
18:    mlr:vignettes/tutorial/create_learner.Rmd
19:      mlrCPO:tests/testthat/test_core_basic.R
20: shiny.blueprint:inst/examples/htmlElements.R
21:       mlr:R/RLearner_regr_LiblineaRL2L2SVR.R
22:          mlr:R/RLearner_classif_naiveBayes.R
23:        mlr:R/RLearner_cluster_SimpleKMeans.R
24:                 mlr:R/generateThreshVsPerf.R
25:       mlr:R/RLearner_cluster_FarthestFirst.R
26:                 mlr:R/RLearner_surv_ranger.R
27:          mlr:R/RLearner_classif_adaboostm1.R
28:        mlr:R/RLearner_regr_h2odeeplearning.R
29:            mlr:R/RLearner_classif_gamboost.R
30:                 mlr:R/RLearner_classif_RRF.R
31:                      designer:R/app_server.R
32:         dampack:vignettes/psa_generation.Rmd
33:         dampack:vignettes/dsa_generation.Rmd
34:                              dampack:R/psa.R
35:         dampack:vignettes/psa_generation.Rmd
36:                            cmstatr:R/equiv.R
37:                    designer:R/mod_code_srv.R
38:         dampack:vignettes/psa_generation.Rmd
39:                           cmstatr:R/levene.R
40:         dampack:vignettes/dsa_generation.Rmd
                                        location
NULL
Comparison of total time to run lint_packages() across all repos:
  3674m to run on main, 3293m to run on v3.0.2
Comparison of time to run lint_package() on each repo (new - old; negative -> faster)
                   package elapsed_main elapsed_v3.0.2         delta
  1:             datarobot      121.731        124.447 -2.716000e+00
  2:       EstimationTools       42.043         43.148 -1.105000e+00
  3:        shiny.semantic       43.236         44.233 -9.970000e-01
  4:               diffusr        0.056          1.037 -9.810000e-01
  5:            epigraphdb        9.332          9.894 -5.620000e-01
  6:                  kdry        5.191          5.687 -4.960000e-01
  7:                  PaRe       19.465         19.935 -4.700000e-01
  8:        data.validator        7.703          8.041 -3.380000e-01
  9:              datacutr       13.514         13.735 -2.210000e-01
 10:       Plasmidprofiler        7.387          7.597 -2.100000e-01
 11:            shiny.info        3.510          3.719 -2.090000e-01
 12:          shiny.router        4.456          4.657 -2.010000e-01
 13:              devtools        1.894          2.055 -1.610000e-01
 14:                 tuber        1.861          2.012 -1.510000e-01
 15:          urlshorteneR       19.203         19.352 -1.490000e-01
 16:                 logrx       14.545         14.677 -1.320000e-01
 17:              fakemake        7.781          7.907 -1.260000e-01
 18:       shiny.blueprint       14.396         14.488 -9.200000e-02
 19:              rdomains        4.563          4.654 -9.100000e-02
 20:           shiny.react        3.510          3.601 -9.100000e-02
 21: WikidataQueryServiceR        1.089          1.147 -5.800000e-02
 22:            adaptalint        2.180          2.209 -2.900000e-02
 23:              activatr       10.013         10.032 -1.900000e-02
 24:          wavefunction        0.796          0.809 -1.300000e-02
 25:          admiral.test        2.175          2.183 -8.000000e-03
 26:               DBItest        0.085          0.090 -5.000000e-03
 27:          opensensmapr        0.029          0.030 -1.000000e-03
 28:                rbokeh        0.051          0.052 -1.000000e-03
 29:              geofacet        0.017          0.017  2.273737e-13
 30:                abbyyR        0.135          0.124  1.100000e-02
 31:               geogrid        0.081          0.056  2.500000e-02
 32:            virustotal        0.079          0.039  4.000000e-02
 33:            RestRserve        0.095          0.042  5.300000e-02
 34:                newsmd        1.680          1.616  6.400000e-02
 35:                 cleaR        1.197          1.100  9.700000e-02
 36:                airnow        5.273          5.163  1.100000e-01
 37:          requiRements        1.271          1.161  1.100000e-01
 38:             aws.alexa        3.230          3.109  1.210000e-01
 39:             describer        1.312          1.183  1.290000e-01
 40:               biolink        5.241          5.103  1.380000e-01
 41:             rasterpdf        2.261          2.118  1.430000e-01
 42:              designer        6.556          6.408  1.480000e-01
 43:              lineupjs        1.465          1.294  1.710000e-01
 44:       NHSRplotthedots       13.281         13.090  1.910000e-01
 45:    semantic.dashboard        9.051          8.829  2.220000e-01
 46:            autonewsmd        2.964          2.741  2.230000e-01
 47:                 tsviz        1.720          1.461  2.590000e-01
 48:        stencilaschema        1.923          1.643  2.800000e-01
 49:                   rde        3.010          2.684  3.260000e-01
 50:                xportr       15.731         15.372  3.590000e-01
 51:               foundry        5.536          5.160  3.760000e-01
 52:            sjtable2df        3.080          2.698  3.820000e-01
 53:               ConNEcT        9.002          8.619  3.830000e-01
 54:                 rhino        7.238          6.850  3.880000e-01
 55:    PosteriorBootstrap        3.850          3.439  4.110000e-01
 56:                dupree        6.463          6.045  4.180000e-01
 57:        WoodburyMatrix        2.757          2.331  4.260000e-01
 58:               prettyB        2.895          2.455  4.400000e-01
 59:            PWFSLSmoke       99.687         99.247  4.400000e-01
 60:              fixtuRes        5.157          4.678  4.790000e-01
 61:                  i18n       16.893         16.401  4.920000e-01
 62:                maraca        4.224          3.654  5.700000e-01
 63:             lifecycle       11.224         10.619  6.050000e-01
 64:       shiny.benchmark        7.255          6.641  6.140000e-01
 65:               dampack       14.235         13.608  6.270000e-01
 66:            scriptexec        4.368          3.719  6.490000e-01
 67:             DepthProc        7.453          6.795  6.580000e-01
 68:              DIZutils        4.702          4.037  6.650000e-01
 69:              autoharp       29.589         28.912  6.770000e-01
 70:         admiralophtha       10.232          9.550  6.820000e-01
 71:                 rnrfa        8.047          7.353  6.940000e-01
 72:            shiny.i18n        4.785          4.060  7.250000e-01
 73:            secuTrialR       35.261         34.509  7.520000e-01
 74:             supernova       14.254         13.501  7.530000e-01
 75:        connectwidgets        9.007          8.253  7.540000e-01
 76:                roadoi        2.653          1.869  7.840000e-01
 77:               mcbette       10.670          9.740  9.300000e-01
 78:           admiralonco       20.578         19.628  9.500000e-01
 79:              ggcharts       13.991         12.977  1.014000e+00
 80:       ggRandomForests       55.207         54.142  1.065000e+00
 81:               upsetjs        7.523          6.401  1.122000e+00
 82:              DIZtools       10.097          8.960  1.137000e+00
 83:               emayili       13.059         11.905  1.154000e+00
 84:                  nLTT       14.585         13.407  1.178000e+00
 85:         INSPECTumours       13.029         11.824  1.205000e+00
 86:                   fst       13.213         11.909  1.304000e+00
 87:               fstcore       13.213         11.909  1.304000e+00
 88:                   TDA       22.142         20.828  1.314000e+00
 89:        admiralvaccine       23.238         21.921  1.317000e+00
 90:            openbankeR        1.460          0.086  1.374000e+00
 91:         FSelectorRcpp       13.989         12.603  1.386000e+00
 92:       shiny.telemetry       12.146         10.676  1.470000e+00
 93:                  RSQL        5.043          3.523  1.520000e+00
 94:          REDCapTidieR       14.568         13.042  1.526000e+00
 95:                DQAgui       13.104         11.575  1.529000e+00
 96:            physiology       13.893         12.338  1.555000e+00
 97:         caretEnsemble       17.782         16.221  1.561000e+00
 98:               cloudos       11.290          9.694  1.596000e+00
 99:              rextendr       15.196         13.443  1.753000e+00
100:                jpmesh       10.888          9.128  1.760000e+00
101:          goodpractice       13.249         11.475  1.774000e+00
102:                   dat       12.988         11.205  1.783000e+00
103:               dittodb       16.973         15.114  1.859000e+00
104:               babette       27.972         26.089  1.883000e+00
105:               modules       12.199         10.273  1.926000e+00
106:             DataFakeR       16.468         14.244  2.224000e+00
107:               clugenr       17.716         15.477  2.239000e+00
108:             precommit       18.623         16.342  2.281000e+00
109:         mlexperiments       18.483         16.200  2.283000e+00
110:                  osfr       25.479         23.167  2.312000e+00
111:         BiasCorrector       11.905          9.513  2.392000e+00
112:           mpathsenser       31.456         29.041  2.415000e+00
113:       rBiasCorrection       12.874         10.390  2.484000e+00
114:              simaerep       29.268         26.607  2.661000e+00
115:              BTYDplus       31.085         28.132  2.953000e+00
116:              ggthemes       38.423         35.323  3.100000e+00
117:            admiraldev       31.765         28.581  3.184000e+00
118:               xgboost       53.471         50.024  3.447000e+00
119:                unifir       16.863         13.137  3.726000e+00
120:               cmstatr       46.414         42.563  3.851000e+00
121:              DQAstats       26.513         22.623  3.890000e+00
122:                mlflow       21.727         17.744  3.983000e+00
123:              fxTWAPLS       17.554         13.421  4.133000e+00
124:              packager       27.637         22.096  5.541000e+00
125:                 smerc       80.618         74.017  6.601000e+00
126:             edgarWebR      399.148        392.382  6.766000e+00
127:             pirouette       73.519         65.545  7.974000e+00
128:        languageserver       19.047         10.991  8.056000e+00
129:             ggfortify       46.798         38.457  8.341000e+00
130:       dashboardthemes        8.733          0.051  8.682000e+00
131:               admiral      193.309        184.534  8.775000e+00
132:               latrend      108.993         97.078  1.191500e+01
133:              lightgbm       56.230         43.229  1.300100e+01
134:               dyn.log       15.716          0.145  1.557100e+01
135:              beautier      167.769        151.869  1.590000e+01
136:                 arrow      182.153        153.499  2.865400e+01
137:                crunch      217.087        188.247  2.884000e+01
138:                 bupaR       40.588         10.618  2.997000e+01
139:                mlrCPO      145.003        112.939  3.206400e+01
140:                   mlr      213.409        171.629  4.178000e+01
                   package elapsed_main elapsed_v3.0.2         delta
         delta_pct
  1: -2.182455e+00
  2: -2.560953e+00
  3: -2.253973e+00
  4: -9.459981e+01
  5: -5.680210e+00
  6: -8.721646e+00
  7: -2.357662e+00
  8: -4.203457e+00
  9: -1.609028e+00
 10: -2.764249e+00
 11: -5.619790e+00
 12: -4.316083e+00
 13: -7.834550e+00
 14: -7.504970e+00
 15: -7.699463e-01
 16: -8.993664e-01
 17: -1.593525e+00
 18: -6.350083e-01
 19: -1.955307e+00
 20: -2.527076e+00
 21: -5.056670e+00
 22: -1.312811e+00
 23: -1.893939e-01
 24: -1.606922e+00
 25: -3.664682e-01
 26: -5.555556e+00
 27: -3.333333e+00
 28: -1.923077e+00
 29:  1.337492e-09
 30:  8.870968e+00
 31:  4.464286e+01
 32:  1.025641e+02
 33:  1.261905e+02
 34:  3.960396e+00
 35:  8.818182e+00
 36:  2.130544e+00
 37:  9.474591e+00
 38:  3.891927e+00
 39:  1.090448e+01
 40:  2.704292e+00
 41:  6.751653e+00
 42:  2.309613e+00
 43:  1.321484e+01
 44:  1.459129e+00
 45:  2.514441e+00
 46:  8.135717e+00
 47:  1.772758e+01
 48:  1.704200e+01
 49:  1.214605e+01
 50:  2.335415e+00
 51:  7.286822e+00
 52:  1.415864e+01
 53:  4.443671e+00
 54:  5.664234e+00
 55:  1.195115e+01
 56:  6.914806e+00
 57:  1.827542e+01
 58:  1.792261e+01
 59:  4.433383e-01
 60:  1.023942e+01
 61:  2.999817e+00
 62:  1.559934e+01
 63:  5.697335e+00
 64:  9.245596e+00
 65:  4.607584e+00
 66:  1.745093e+01
 67:  9.683591e+00
 68:  1.647263e+01
 69:  2.341588e+00
 70:  7.141361e+00
 71:  9.438324e+00
 72:  1.785714e+01
 73:  2.179142e+00
 74:  5.577365e+00
 75:  9.136072e+00
 76:  4.194757e+01
 77:  9.548255e+00
 78:  4.840024e+00
 79:  7.813824e+00
 80:  1.967050e+00
 81:  1.752851e+01
 82:  1.268973e+01
 83:  9.693406e+00
 84:  8.786455e+00
 85:  1.019114e+01
 86:  1.094970e+01
 87:  1.094970e+01
 88:  6.308815e+00
 89:  6.007938e+00
 90:  1.597674e+03
 91:  1.099738e+01
 92:  1.376920e+01
 93:  4.314505e+01
 94:  1.170066e+01
 95:  1.320950e+01
 96:  1.260334e+01
 97:  9.623328e+00
 98:  1.646379e+01
 99:  1.304024e+01
100:  1.928133e+01
101:  1.545969e+01
102:  1.591254e+01
103:  1.229985e+01
104:  7.217601e+00
105:  1.874817e+01
106:  1.561359e+01
107:  1.446663e+01
108:  1.395790e+01
109:  1.409259e+01
110:  9.979713e+00
111:  2.514454e+01
112:  8.315829e+00
113:  2.390760e+01
114:  1.000113e+01
115:  1.049694e+01
116:  8.776152e+00
117:  1.114027e+01
118:  6.890692e+00
119:  2.836264e+01
120:  9.047764e+00
121:  1.719489e+01
122:  2.244702e+01
123:  3.079502e+01
124:  2.507694e+01
125:  8.918221e+00
126:  1.724340e+00
127:  1.216569e+01
128:  7.329633e+01
129:  2.168916e+01
130:  1.702353e+04
131:  4.755221e+00
132:  1.227364e+01
133:  3.007472e+01
134:  1.073862e+04
135:  1.046955e+01
136:  1.866722e+01
137:  1.532030e+01
138:  2.822565e+02
139:  2.839055e+01
140:  2.434321e+01
         delta_pct
     0%     10%     20%     30%     40%     50%     60%     70%     80%     90% 
-2.7160 -0.1492 -0.0002  0.1641  0.4228  0.6880  1.1888  1.6431  2.4288  6.8868 
   100% 
41.7800 

I'll file an issue about investigating the slowdown, e.g. in mlr. I don't remember off-hand whether that timing would organically increase if we just add new default linters, so my first guess is the new indentation_linter() is responsible.

MichaelChirico commented 1 year ago

Here are the new warnings vs. 3.0.2:

** admiral
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** BiasCorrector
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** bupaR
Trying to remove ‘no_tab_linter’, which is not in `defaults`.
Evaluating glue expression while testing for local variable usage failed: Expecting '}'
** cattonum
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** designer
Linter unneeded_concatenation_linter was deprecated in lintr version 3.1.0. Use unnecessary_concatenation_linter instead.
Possible bug in lintr: Couldn't parse usage message ‘<anonymous>: no visible global function definition for 'find_cache_dir'
’. Ignoring 1 usage warnings. Please report an issue at https://github.com/r-lib/lintr/issues.
Possible bug in lintr: Couldn't parse usage message ‘<anonymous>: no visible global function definition for 'find_cache_dir'
’. Ignoring 1 usage warnings. Please report an issue at https://github.com/r-lib/lintr/issues.
** dittodb
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** DQAgui
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** dupree
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** emayili
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** healthcareai
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
Trying to remove ‘camel_case_linter’, which is not in `defaults`.
** languageserver
Could not find linter named ‘%s’ in the list of active linters. Make sure the linter is uniquely identified by the given name or prefix.
** latrend
Possible bug in lintr: Couldn't parse usage message ‘<anonymous>: no visible binding for global variable 'id'
’. Ignoring 1 usage warnings. Please report an issue at https://github.com/r-lib/lintr/issues.
** mlrCPO
Possible bug in lintr: Couldn't parse usage message ‘<anonymous>: local variable 't' assigned but may not be used
’. Ignoring 1 usage warnings. Please report an issue at https://github.com/r-lib/lintr/issues.
** rBiasCorrection
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** rextendr
Possible bug in lintr: Couldn't parse usage message ‘<anonymous>: no visible binding for global variable 'wrap__hello_world'
’. Ignoring 1 usage warnings. Please report an issue at https://github.com/r-lib/lintr/issues.
** rhino
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** supernova
Function with_defaults was deprecated in lintr version 2.0.9001. Use linters_with_defaults instead.
** WoodburyMatrix
Trying to remove ‘single_quotes_linter’, which is not in `defaults`

I see a few possible regressions there, filing issues.

MichaelChirico commented 1 year ago

@AshesITR @IndrajeetPatil anything else you'd like to see included in this release?

1989 and #1992 are the last PRs for me.

Barring that, @jimhester could you take it from here? Let us know how else to help :pray:

Thanks for the hard work everyone!

IndrajeetPatil commented 1 year ago

The update is on CRAN: https://cran.r-project.org/web/packages/lintr/index.html

After making a GitHub release, I think this issue can be closed.

MichaelChirico commented 1 year ago

Thanks @jimhester !!