Skip to content

Commit 21f98eb

Browse files
authored
Merge pull request #52 from ajinabraham/3.1.3
Update PatternMatcher and ChoiceMatcher internal apis
2 parents 18cb1b0 + 192b564 commit 21f98eb

File tree

5 files changed

+25
-14
lines changed

5 files changed

+25
-14
lines changed

libsast/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
__title__ = 'libsast'
1313
__authors__ = 'Ajin Abraham'
1414
__copyright__ = f'Copyright {year} Ajin Abraham, opensecurity.in'
15-
__version__ = '3.1.2'
15+
__version__ = '3.1.3'
1616
__version_info__ = tuple(int(i) for i in __version__.split('.'))
1717
__all__ = [
1818
'Scanner',

libsast/core_matcher/choice_matcher.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ def scan(self, paths: list) -> dict:
4141

4242
def read_file_contents(self, paths: list) -> list:
4343
"""Load file(s) content."""
44-
if not (self.scan_rules and paths):
45-
return
46-
self.validate_rules()
44+
if not paths:
45+
return []
46+
4747
choice_args = []
4848
for rule in self.scan_rules:
4949
scan_paths = paths
@@ -64,8 +64,14 @@ def read_file_contents(self, paths: list) -> list:
6464
futures.append(future)
6565
return [future.result() for future in futures]
6666

67-
def regex_scan(self, file_contents) -> list:
67+
def regex_scan(self, file_contents: list, rules=None) -> dict:
6868
"""Process regex matches on the file contents."""
69+
if rules:
70+
self.scan_rules = get_rules(rules)
71+
if not (self.scan_rules and file_contents):
72+
return {}
73+
self.validate_rules()
74+
6975
if self.queue:
7076
# Use billiard's pool for regex (support queues)
7177
from billiard import Pool

libsast/core_matcher/pattern_matcher.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@ def scan(self, paths: list) -> dict:
4141

4242
def read_file_contents(self, paths: list) -> list:
4343
"""Load file(s) content."""
44-
if not (self.scan_rules and paths):
45-
return
46-
self.validate_rules()
44+
if not paths:
45+
return []
4746

4847
# Filter files by extension and size, prepare list for processing
4948
files_to_scan = {
@@ -61,8 +60,14 @@ def read_file_contents(self, paths: list) -> list:
6160
self._read_file_content, files_to_scan))
6261
return file_contents
6362

64-
def regex_scan(self, file_contents: list) -> dict:
63+
def regex_scan(self, file_contents: list, rules=None) -> dict:
6564
"""Scan file(s) content."""
65+
if rules:
66+
self.scan_rules = get_rules(rules)
67+
if not (self.scan_rules and file_contents):
68+
return {}
69+
self.validate_rules()
70+
6671
if self.queue:
6772
# Use billiard's pool for CPU-bound regex (support queues)
6873
from billiard import Pool

libsast/scanner.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __init__(self, options: dict, paths: list) -> None:
5454
def scan(self) -> dict:
5555
"""Start Scan."""
5656
results = {}
57-
valid_paths = self.get_scan_files(self.paths)
57+
valid_paths = self.get_scan_files()
5858

5959
if not valid_paths:
6060
return {}
@@ -68,13 +68,13 @@ def scan(self) -> dict:
6868

6969
return results
7070

71-
def get_scan_files(self, paths):
71+
def get_scan_files(self):
7272
"""Get files valid for scanning."""
73-
if not isinstance(paths, list):
73+
if not isinstance(self.paths, list):
7474
raise InvalidPathError('Path should be a list')
7575

7676
all_files = set()
77-
for path in paths:
77+
for path in self.paths:
7878
pobj = Path(path)
7979
if pobj.is_dir():
8080
all_files.update({

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "libsast"
3-
version = "3.1.2"
3+
version = "3.1.3"
44
description = "A generic SAST library built on top of semgrep and regex"
55
keywords = ["libsast", "SAST", "Python SAST", "SAST API", "Regex SAST", "Pattern Matcher"]
66
authors = ["Ajin Abraham <ajin@opensecurity.in>"]

0 commit comments

Comments
 (0)