20
20
from macaron .malware_analyzer .pypi_heuristics .metadata .empty_project_link import EmptyProjectLinkAnalyzer
21
21
from macaron .malware_analyzer .pypi_heuristics .metadata .high_release_frequency import HighReleaseFrequencyAnalyzer
22
22
from macaron .malware_analyzer .pypi_heuristics .metadata .one_release import OneReleaseAnalyzer
23
+ from macaron .malware_analyzer .pypi_heuristics .metadata .source_code_repo import SourceCodeRepoAnalyzer
23
24
from macaron .malware_analyzer .pypi_heuristics .metadata .unchanged_release import UnchangedReleaseAnalyzer
24
- from macaron .malware_analyzer .pypi_heuristics .metadata .unreachable_project_links import UnreachableProjectLinksAnalyzer
25
25
from macaron .malware_analyzer .pypi_heuristics .metadata .wheel_absence import WheelAbsenceAnalyzer
26
26
from macaron .malware_analyzer .pypi_heuristics .pypi_sourcecode_analyzer import PyPISourcecodeAnalyzer
27
27
from macaron .malware_analyzer .pypi_heuristics .sourcecode .suspicious_setup import SuspiciousSetupAnalyzer
@@ -69,7 +69,7 @@ class MaliciousMetadataFacts(CheckFacts):
69
69
# When implementing new analyzer, appending the classes to this list
70
70
ANALYZERS : list = [
71
71
EmptyProjectLinkAnalyzer ,
72
- UnreachableProjectLinksAnalyzer ,
72
+ SourceCodeRepoAnalyzer ,
73
73
OneReleaseAnalyzer ,
74
74
HighReleaseFrequencyAnalyzer ,
75
75
UnchangedReleaseAnalyzer ,
@@ -97,7 +97,7 @@ class MaliciousMetadataFacts(CheckFacts):
97
97
] = {
98
98
(
99
99
HeuristicResult .FAIL , # Empty Project
100
- HeuristicResult .SKIP , # Unreachable Project Links
100
+ HeuristicResult .SKIP , # Source Code Repo
101
101
HeuristicResult .FAIL , # One Release
102
102
HeuristicResult .SKIP , # High Release Frequency
103
103
HeuristicResult .SKIP , # Unchanged Release
@@ -112,7 +112,7 @@ class MaliciousMetadataFacts(CheckFacts):
112
112
): Confidence .HIGH ,
113
113
(
114
114
HeuristicResult .FAIL , # Empty Project
115
- HeuristicResult .SKIP , # Unreachable Project Links
115
+ HeuristicResult .SKIP , # Source Code Repo
116
116
HeuristicResult .FAIL , # One Release
117
117
HeuristicResult .SKIP , # High Release Frequency
118
118
HeuristicResult .SKIP , # Unchanged Release
@@ -127,7 +127,7 @@ class MaliciousMetadataFacts(CheckFacts):
127
127
): Confidence .HIGH ,
128
128
(
129
129
HeuristicResult .FAIL , # Empty Project
130
- HeuristicResult .SKIP , # Unreachable Project Links
130
+ HeuristicResult .SKIP , # Source Code Repo
131
131
HeuristicResult .PASS , # One Release
132
132
HeuristicResult .FAIL , # High Release Frequency
133
133
HeuristicResult .FAIL , # Unchanged Release
@@ -141,7 +141,7 @@ class MaliciousMetadataFacts(CheckFacts):
141
141
): Confidence .HIGH ,
142
142
(
143
143
HeuristicResult .FAIL , # Empty Project
144
- HeuristicResult .SKIP , # Unreachable Project Links
144
+ HeuristicResult .SKIP , # Source Code Repo
145
145
HeuristicResult .PASS , # One Release
146
146
HeuristicResult .FAIL , # High Release Frequency
147
147
HeuristicResult .PASS , # Unchanged Release
@@ -155,7 +155,7 @@ class MaliciousMetadataFacts(CheckFacts):
155
155
): Confidence .HIGH ,
156
156
(
157
157
HeuristicResult .FAIL , # Empty Project
158
- HeuristicResult .SKIP , # Unreachable Project Links
158
+ HeuristicResult .SKIP , # Source Code Repo
159
159
HeuristicResult .PASS , # One Release
160
160
HeuristicResult .FAIL , # High Release Frequency
161
161
HeuristicResult .FAIL , # Unchanged Release
@@ -169,7 +169,7 @@ class MaliciousMetadataFacts(CheckFacts):
169
169
): Confidence .MEDIUM ,
170
170
(
171
171
HeuristicResult .FAIL , # Empty Project
172
- HeuristicResult .SKIP , # Unreachable Project Links
172
+ HeuristicResult .SKIP , # Source Code Repo
173
173
HeuristicResult .PASS , # One Release
174
174
HeuristicResult .FAIL , # High Release Frequency
175
175
HeuristicResult .FAIL , # Unchanged Release
@@ -183,21 +183,21 @@ class MaliciousMetadataFacts(CheckFacts):
183
183
): Confidence .MEDIUM ,
184
184
(
185
185
HeuristicResult .PASS , # Empty Project
186
- HeuristicResult .FAIL , # Unreachable Project Links
186
+ HeuristicResult .FAIL , # Source Code Repo
187
187
HeuristicResult .PASS , # One Release
188
188
HeuristicResult .FAIL , # High Release Frequency
189
189
HeuristicResult .PASS , # Unchanged Release
190
190
HeuristicResult .FAIL , # Closer Release Join Date
191
191
HeuristicResult .FAIL , # Suspicious Setup
192
192
HeuristicResult .FAIL , # Wheel Absence
193
193
HeuristicResult .SKIP , # Anomalous Version
194
- # All project links are unreachable , frequent releases of multiple versions,
194
+ # No source code repo , frequent releases of multiple versions,
195
195
# and the maintainer released it shortly after account registration.
196
196
# The setup.py file contains suspicious imports and .whl file isn't present.
197
197
): Confidence .HIGH ,
198
198
(
199
199
HeuristicResult .FAIL , # Empty Project
200
- HeuristicResult .SKIP , # Unreachable Project Links
200
+ HeuristicResult .SKIP , # Source Code Repo
201
201
HeuristicResult .FAIL , # One Release
202
202
HeuristicResult .SKIP , # High Release Frequency
203
203
HeuristicResult .SKIP , # Unchanged Release
@@ -212,7 +212,7 @@ class MaliciousMetadataFacts(CheckFacts):
212
212
): Confidence .MEDIUM ,
213
213
(
214
214
HeuristicResult .FAIL , # Empty Project
215
- HeuristicResult .SKIP , # Unreachable Project Links
215
+ HeuristicResult .SKIP , # Source Code Repo
216
216
HeuristicResult .FAIL , # One Release
217
217
HeuristicResult .SKIP , # High Release Frequency
218
218
HeuristicResult .SKIP , # Unchanged Release
@@ -227,7 +227,7 @@ class MaliciousMetadataFacts(CheckFacts):
227
227
): Confidence .MEDIUM ,
228
228
(
229
229
HeuristicResult .FAIL , # Empty Project
230
- HeuristicResult .SKIP , # Unreachable Project Links
230
+ HeuristicResult .SKIP , # Source Code Repo
231
231
HeuristicResult .FAIL , # One Release
232
232
HeuristicResult .SKIP , # High Release Frequency
233
233
HeuristicResult .SKIP , # Unchanged Release
0 commit comments