Skip to content

Commit

Permalink
missed tests for analysis filters
Browse files Browse the repository at this point in the history
  • Loading branch information
maxrichie5 committed Dec 18, 2023
1 parent a36ac37 commit c0f9113
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 56 deletions.
9 changes: 7 additions & 2 deletions panther_analysis_tool/analysis_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import argparse
import dataclasses
import json
import logging
Expand Down Expand Up @@ -49,12 +50,12 @@
AnalysisTypes,
)
from panther_analysis_tool.schemas import (
CORRELATION_RULE_SCHEMA,
DERIVED_SCHEMA,
GLOBAL_SCHEMA,
POLICY_SCHEMA,
RULE_SCHEMA,
CORRELATION_RULE_SCHEMA,
SIGNAL_SCHEMA,
DERIVED_SCHEMA,
)
from panther_analysis_tool.util import is_simple_detection

Expand Down Expand Up @@ -195,6 +196,10 @@ def empty(self) -> bool:
return len(self.filters) == 0 and len(self.filters_inverted) == 0


def add_analysis_filters_to_args(args: argparse.Namespace) -> None:
args.analysis_filters = AnalysisFilters.from_filter_list(getattr(args, "filter") or [])


def filter_analysis(
analysis: List[ClassifiedAnalysis], analysis_filters: AnalysisFilters
) -> List[ClassifiedAnalysis]:
Expand Down
4 changes: 2 additions & 2 deletions panther_analysis_tool/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@
from panther_analysis_tool.analysis_utils import (
ClassifiedAnalysis,
ClassifiedAnalysisContainer,
add_analysis_filters_to_args,
disable_all_base_detections,
filter_analysis,
get_simple_detections_as_python,
load_analysis_specs,
load_analysis_specs_ex,
lookup_base_detection,
transpile_inline_filters,
AnalysisFilters,
)
from panther_analysis_tool.backend.client import (
BackendError,
Expand Down Expand Up @@ -2001,7 +2001,7 @@ def run() -> None:
logging.getLogger("sqlfluff.lexer").setLevel(logging.WARNING)
logging.getLogger("sqlfluff.templater").setLevel(logging.WARNING)

args.analysis_filters = AnalysisFilters.from_filter_list(getattr(args, "filter", None))
add_analysis_filters_to_args(args)

for key in os.environ:
if key.startswith("PANTHER_"):
Expand Down
22 changes: 5 additions & 17 deletions panther_analysis_tool/zip_chunker.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing import Any, Dict, Generator, List, Optional, Set

from panther_analysis_tool.analysis_utils import (
AnalysisFilters,
ClassifiedAnalysis,
filter_analysis,
load_analysis_specs,
Expand Down Expand Up @@ -48,23 +49,11 @@ class ZipArgs:
out: Any
path: Any
ignore_files: List[str]
filters: Dict[str, List]
filters_inverted: Dict[str, List]
analysis_filters: AnalysisFilters

@classmethod
def from_args(cls, args: argparse.Namespace) -> Any:
filters = []
filters_inverted = {}
def from_args(cls, args: argparse.Namespace) -> "ZipArgs":
out = "./"
try:
filters = args.filter
except: # pylint: disable=bare-except # nosec
pass

try:
filters_inverted = args.filter_inverted
except: # pylint: disable=bare-except # nosec
pass

try:
out = args.out
Expand All @@ -74,8 +63,7 @@ def from_args(cls, args: argparse.Namespace) -> Any:
out=out,
path=args.path,
ignore_files=args.ignore_files,
filters=filters, # type: ignore
filters_inverted=filters_inverted,
analysis_filters=args.analysis_filters,
)


Expand Down Expand Up @@ -169,7 +157,7 @@ def analysis_for_chunks(args: ZipArgs, no_helpers: bool = False) -> List[Classif
analysis.append(ClassifiedAnalysis(file_name, f_path, spec))
files.add(file_name)
files.add("./" + file_name)
return filter_analysis(analysis, args.filters, args.filters_inverted)
return filter_analysis(analysis, args.analysis_filters)


def chunk_analysis(
Expand Down
Loading

0 comments on commit c0f9113

Please sign in to comment.