Skip to content

Commit b1efd59

Browse files
committed
[feat] Add Seqra report converter
1 parent 7fde508 commit b1efd59

File tree

6 files changed

+623
-0
lines changed

6 files changed

+623
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# -------------------------------------------------------------------------
2+
#
3+
# Part of the CodeChecker project, under the Apache License v2.0 with
4+
# LLVM Exceptions. See LICENSE for license information.
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
#
7+
# -------------------------------------------------------------------------
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -------------------------------------------------------------------------
2+
#
3+
# Part of the CodeChecker project, under the Apache License v2.0 with
4+
# LLVM Exceptions. See LICENSE for license information.
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
#
7+
# -------------------------------------------------------------------------
8+
9+
import logging
10+
from typing import List
11+
12+
from codechecker_report_converter.report import Report
13+
from codechecker_report_converter.report.parser import sarif
14+
15+
from ..analyzer_result import AnalyzerResultBase
16+
17+
18+
LOG = logging.getLogger('report-converter')
19+
20+
21+
class AnalyzerResult(AnalyzerResultBase):
22+
""" Transform analyzer result of the Seqra."""
23+
24+
TOOL_NAME = 'seqra'
25+
NAME = 'Seqra Security-Focused Static Analyzer'
26+
URL = 'https://seqra.dev/'
27+
28+
def get_reports(self, file_path: str) -> List[Report]:
29+
""" Get reports from the given analyzer result file. """
30+
31+
return sarif.Parser().get_reports(file_path)
Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>diagnostics</key>
6+
<array>
7+
<dict>
8+
<key>category</key>
9+
<string>unknown</string>
10+
<key>check_name</key>
11+
<string>seqra.java.spring.xss</string>
12+
<key>description</key>
13+
<string>Controller returns an untrusted unvalidated data</string>
14+
<key>issue_hash_content_of_line_in_context</key>
15+
<string>9912049596cf713fc0bdaee7280274d8</string>
16+
<key>location</key>
17+
<dict>
18+
<key>col</key>
19+
<integer>1</integer>
20+
<key>file</key>
21+
<integer>0</integer>
22+
<key>line</key>
23+
<integer>18</integer>
24+
</dict>
25+
<key>path</key>
26+
<array>
27+
<dict>
28+
<key>edges</key>
29+
<array>
30+
<dict>
31+
<key>end</key>
32+
<array>
33+
<dict>
34+
<key>col</key>
35+
<integer>1</integer>
36+
<key>file</key>
37+
<integer>0</integer>
38+
<key>line</key>
39+
<integer>18</integer>
40+
</dict>
41+
<dict>
42+
<key>col</key>
43+
<integer>1</integer>
44+
<key>file</key>
45+
<integer>0</integer>
46+
<key>line</key>
47+
<integer>18</integer>
48+
</dict>
49+
</array>
50+
<key>start</key>
51+
<array>
52+
<dict>
53+
<key>col</key>
54+
<integer>1</integer>
55+
<key>file</key>
56+
<integer>0</integer>
57+
<key>line</key>
58+
<integer>17</integer>
59+
</dict>
60+
<dict>
61+
<key>col</key>
62+
<integer>1</integer>
63+
<key>file</key>
64+
<integer>0</integer>
65+
<key>line</key>
66+
<integer>17</integer>
67+
</dict>
68+
</array>
69+
</dict>
70+
</array>
71+
<key>kind</key>
72+
<string>control</string>
73+
</dict>
74+
<dict>
75+
<key>depth</key>
76+
<integer>0</integer>
77+
<key>kind</key>
78+
<string>event</string>
79+
<key>location</key>
80+
<dict>
81+
<key>col</key>
82+
<integer>1</integer>
83+
<key>file</key>
84+
<integer>0</integer>
85+
<key>line</key>
86+
<integer>17</integer>
87+
</dict>
88+
<key>message</key>
89+
<string>Method entry marks "message" as $PARAM</string>
90+
<key>ranges</key>
91+
<array>
92+
<array>
93+
<dict>
94+
<key>col</key>
95+
<integer>1</integer>
96+
<key>file</key>
97+
<integer>0</integer>
98+
<key>line</key>
99+
<integer>17</integer>
100+
</dict>
101+
<dict>
102+
<key>col</key>
103+
<integer>1</integer>
104+
<key>file</key>
105+
<integer>0</integer>
106+
<key>line</key>
107+
<integer>17</integer>
108+
</dict>
109+
</array>
110+
</array>
111+
</dict>
112+
<dict>
113+
<key>depth</key>
114+
<integer>0</integer>
115+
<key>kind</key>
116+
<string>event</string>
117+
<key>location</key>
118+
<dict>
119+
<key>col</key>
120+
<integer>1</integer>
121+
<key>file</key>
122+
<integer>0</integer>
123+
<key>line</key>
124+
<integer>18</integer>
125+
</dict>
126+
<key>message</key>
127+
<string>Takes $PARAM data at "message" and ends up with $PARAM data at a local variable</string>
128+
<key>ranges</key>
129+
<array>
130+
<array>
131+
<dict>
132+
<key>col</key>
133+
<integer>1</integer>
134+
<key>file</key>
135+
<integer>0</integer>
136+
<key>line</key>
137+
<integer>18</integer>
138+
</dict>
139+
<dict>
140+
<key>col</key>
141+
<integer>1</integer>
142+
<key>file</key>
143+
<integer>0</integer>
144+
<key>line</key>
145+
<integer>18</integer>
146+
</dict>
147+
</array>
148+
</array>
149+
</dict>
150+
<dict>
151+
<key>depth</key>
152+
<integer>0</integer>
153+
<key>kind</key>
154+
<string>event</string>
155+
<key>location</key>
156+
<dict>
157+
<key>col</key>
158+
<integer>1</integer>
159+
<key>file</key>
160+
<integer>0</integer>
161+
<key>line</key>
162+
<integer>18</integer>
163+
</dict>
164+
<key>message</key>
165+
<string>The returning value is assigned a value with $PARAM data</string>
166+
<key>ranges</key>
167+
<array>
168+
<array>
169+
<dict>
170+
<key>col</key>
171+
<integer>1</integer>
172+
<key>file</key>
173+
<integer>0</integer>
174+
<key>line</key>
175+
<integer>18</integer>
176+
</dict>
177+
<dict>
178+
<key>col</key>
179+
<integer>1</integer>
180+
<key>file</key>
181+
<integer>0</integer>
182+
<key>line</key>
183+
<integer>18</integer>
184+
</dict>
185+
</array>
186+
</array>
187+
</dict>
188+
<dict>
189+
<key>depth</key>
190+
<integer>0</integer>
191+
<key>kind</key>
192+
<string>event</string>
193+
<key>location</key>
194+
<dict>
195+
<key>col</key>
196+
<integer>1</integer>
197+
<key>file</key>
198+
<integer>0</integer>
199+
<key>line</key>
200+
<integer>18</integer>
201+
</dict>
202+
<key>message</key>
203+
<string>Controller returns an untrusted unvalidated data</string>
204+
<key>ranges</key>
205+
<array>
206+
<array>
207+
<dict>
208+
<key>col</key>
209+
<integer>1</integer>
210+
<key>file</key>
211+
<integer>0</integer>
212+
<key>line</key>
213+
<integer>18</integer>
214+
</dict>
215+
<dict>
216+
<key>col</key>
217+
<integer>1</integer>
218+
<key>file</key>
219+
<integer>0</integer>
220+
<key>line</key>
221+
<integer>18</integer>
222+
</dict>
223+
</array>
224+
</array>
225+
</dict>
226+
</array>
227+
<key>type</key>
228+
<string>seqra</string>
229+
</dict>
230+
</array>
231+
<key>files</key>
232+
<array>
233+
<string>files/UserProfileController.java</string>
234+
</array>
235+
<key>metadata</key>
236+
<dict>
237+
<key>analyzer</key>
238+
<dict>
239+
<key>name</key>
240+
<string>seqra</string>
241+
</dict>
242+
<key>generated_by</key>
243+
<dict>
244+
<key>name</key>
245+
<string>report-converter</string>
246+
<key>version</key>
247+
<string>x.y.z</string>
248+
</dict>
249+
</dict>
250+
</dict>
251+
</plist>

0 commit comments

Comments
 (0)