Skip to content

Commit 6a00317

Browse files
authored
Fix json and yaml formatters to respect num lines (#929)
The json and yaml formatters were not outputting the lines of content according to the user's selection. This is a result of issue:as_dict() function that does not pass through the max_lines argument to get_code. As a result, it would always return the default of 3. This change now optionally passes through desired lines of content. Fixes #604 Signed-off-by: Eric Brown <[email protected]>
1 parent f352b20 commit 6a00317

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

bandit/core/issue.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def get_code(self, max_lines=3, tabbed=False):
196196
lines.append(tmplt % (line, text))
197197
return "".join(lines)
198198

199-
def as_dict(self, with_code=True):
199+
def as_dict(self, with_code=True, max_lines=3):
200200
"""Convert the issue to a dict of values for outputting."""
201201
out = {
202202
"filename": self.fname,
@@ -213,7 +213,7 @@ def as_dict(self, with_code=True):
213213
}
214214

215215
if with_code:
216-
out["code"] = self.get_code()
216+
out["code"] = self.get_code(max_lines=max_lines)
217217
return out
218218

219219
def from_dict(self, data, with_code=True):

bandit/formatters/json.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,16 @@ def report(manager, fileobj, sev_level, conf_level, lines=-1):
111111
if baseline:
112112
collector = []
113113
for r in results:
114-
d = r.as_dict()
114+
d = r.as_dict(max_lines=lines)
115115
d["more_info"] = docs_utils.get_url(d["test_id"])
116116
if len(results[r]) > 1:
117-
d["candidates"] = [c.as_dict() for c in results[r]]
117+
d["candidates"] = [
118+
c.as_dict(max_lines=lines) for c in results[r]
119+
]
118120
collector.append(d)
119121

120122
else:
121-
collector = [r.as_dict() for r in results]
123+
collector = [r.as_dict(max_lines=lines) for r in results]
122124
for elem in collector:
123125
elem["more_info"] = docs_utils.get_url(elem["test_id"])
124126

bandit/formatters/yaml.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def report(manager, fileobj, sev_level, conf_level, lines=-1):
9191
sev_level=sev_level, conf_level=conf_level
9292
)
9393

94-
collector = [r.as_dict() for r in results]
94+
collector = [r.as_dict(max_lines=lines) for r in results]
9595
for elem in collector:
9696
elem["more_info"] = docs_utils.get_url(elem["test_id"])
9797

0 commit comments

Comments
 (0)