@@ -47,27 +47,39 @@ async fn run(
4747 let ignored = is_ignored ( package. name . as_str ( ) , requested. version . as_str ( ) , policy) ;
4848
4949 if requested. deprecated {
50- findings. push ( CheckFinding {
51- severity : Severity :: High ,
52- reason : format ! (
53- "{}@{} is marked deprecated" ,
54- package. name, requested. version
55- ) ,
56- } ) ;
50+ findings. push (
51+ CheckFinding :: new (
52+ Severity :: High ,
53+ format ! (
54+ "{}@{} is marked deprecated" ,
55+ package. name, requested. version
56+ ) ,
57+ "deprecated_version" ,
58+ )
59+ . with_fact ( "package_name" , package. name . as_str ( ) )
60+ . with_fact ( "resolved_version" , requested. version . as_str ( ) ) ,
61+ ) ;
5762 }
5863
5964 if !ignored && let Some ( published) = requested. published {
6065 let age_days = chrono:: Utc :: now ( )
6166 . signed_duration_since ( published)
6267 . num_days ( ) ;
6368 if age_days >= policy. warn_age_days {
64- findings. push ( CheckFinding {
65- severity : Severity :: Low ,
66- reason : format ! (
67- "{}@{} is {} day(s) old (>= {} days)" ,
68- package. name, requested. version, age_days, policy. warn_age_days
69- ) ,
70- } ) ;
69+ findings. push (
70+ CheckFinding :: new (
71+ Severity :: Low ,
72+ format ! (
73+ "{}@{} is {} day(s) old (>= {} days)" ,
74+ package. name, requested. version, age_days, policy. warn_age_days
75+ ) ,
76+ "old_release_age" ,
77+ )
78+ . with_fact ( "package_name" , package. name . as_str ( ) )
79+ . with_fact ( "resolved_version" , requested. version . as_str ( ) )
80+ . with_fact ( "age_days" , age_days)
81+ . with_fact ( "warn_age_days" , policy. warn_age_days ) ,
82+ ) ;
7183 }
7284 }
7385
@@ -94,21 +106,44 @@ async fn run(
94106 } ;
95107
96108 if major_gap >= policy. warn_major_versions_behind {
97- findings. push ( CheckFinding {
98- severity : Severity :: Medium ,
99- reason : format ! (
100- "{}@{} is {} major version(s) behind latest ({})" ,
101- package. name, requested. version, major_gap, package. latest
109+ findings. push (
110+ CheckFinding :: new (
111+ Severity :: Medium ,
112+ format ! (
113+ "{}@{} is {} major version(s) behind latest ({})" ,
114+ package. name, requested. version, major_gap, package. latest
115+ ) ,
116+ "major_versions_behind" ,
117+ )
118+ . with_fact ( "package_name" , package. name . as_str ( ) )
119+ . with_fact ( "resolved_version" , requested. version . as_str ( ) )
120+ . with_fact ( "latest_version" , package. latest . as_str ( ) )
121+ . with_fact ( "major_gap" , major_gap)
122+ . with_fact (
123+ "warn_major_versions_behind" ,
124+ policy. warn_major_versions_behind ,
102125 ) ,
103- } ) ;
126+ ) ;
104127 } else if major_gap >= 1 || minor_gap >= policy. warn_minor_versions_behind {
105- findings. push ( CheckFinding {
106- severity : Severity :: Low ,
107- reason : format ! (
108- "{}@{} is behind latest ({})" ,
109- package. name, requested. version, package. latest
128+ findings. push (
129+ CheckFinding :: new (
130+ Severity :: Low ,
131+ format ! (
132+ "{}@{} is behind latest ({})" ,
133+ package. name, requested. version, package. latest
134+ ) ,
135+ "behind_latest" ,
136+ )
137+ . with_fact ( "package_name" , package. name . as_str ( ) )
138+ . with_fact ( "resolved_version" , requested. version . as_str ( ) )
139+ . with_fact ( "latest_version" , package. latest . as_str ( ) )
140+ . with_fact ( "major_gap" , major_gap)
141+ . with_fact ( "minor_gap" , minor_gap)
142+ . with_fact (
143+ "warn_minor_versions_behind" ,
144+ policy. warn_minor_versions_behind ,
110145 ) ,
111- } ) ;
146+ ) ;
112147 }
113148
114149 findings
0 commit comments