Files
Sergey Polzunov 1fb60d6475 fix: type hinting fixes and additional code checks (#4790)
* first pass

* Adding a dedicated code checking workflow

* Type fixes

* linting config and python version bump

* Type hints

* Drop incorrect config option

* More fixes

* Style fixes

* CI adjustments

* Pyproject fixes

* CI & pyproject fixes

* Proper version bump

* Tests formatting

* Resolve cirtular dependency

* Test fixes

* Make sure the tests are formatted correctly

* Check tweaks

* Bumping python version in CI images

* Pin marshmallow do 3.x because 4.x is not supported

* License fix

* Convert path to str

* Making myself a codeowner

* Missing kwargs param

* Adding a missing kwargs to `set_score`

* Update .github/CODEOWNERS

Co-authored-by: Mika Ayenson, PhD <Mikaayenson@users.noreply.github.com>

* Dropping unnecessary raise

* Dropping skipped test

* Drop unnecessary var

* Drop unused commented-out func

* Disable typehinting for the whole func

* Update linting command

* Invalid type hist on the input param

* Incorrect field type

* Incorrect value used fix

* Stricter values check

* Simpler function call

* Type condition fix

* TOML formatter fix

* Simpligy output conditions

* Formatting

* Use proper types instead of aliases

* MITRE attack fixes

* Using pathlib.Path for an argument

* Use proper method to update a set from a dict

* First round of `ruff` fixes

* More fixes

* More fixes

* Hack against cyclic dependency

* Ignore `PLC0415`

* Remove unused markers

* Cleanup

* Fixing the incorrect condition

* Update .github/CODEOWNERS

Co-authored-by: Mika Ayenson, PhD <Mikaayenson@users.noreply.github.com>

* Set explicit default values for optional fields

* Update the guidelines

* Adding None Defaults

---------

Co-authored-by: Mika Ayenson, PhD <Mikaayenson@users.noreply.github.com>
Co-authored-by: eric-forte-elastic <eric.forte@elastic.co>
2025-07-01 08:20:55 -05:00

75 lines
1.7 KiB
Makefile

#################
### detection-rules
#################
APP_NAME := detection-rules
VENV := ./env/detection-rules-build
VENV_BIN := $(VENV)/bin
PYTHON := $(VENV_BIN)/python
PIP := $(VENV_BIN)/pip
.PHONY: all
all: release
$(VENV):
python3.12 -m venv $(VENV)
.PHONY: clean
clean:
rm -rf $(VENV) *.egg-info .eggs .egg htmlcov build dist packages .build .tmp .tox __pycache__ lib/kql/build lib/kibana/build lib/kql/*.egg-info lib/kibana/*.egg-info
.PHONY: deps
deps: $(VENV)
@echo "Installing all dependencies..."
$(PIP) install .[dev]
$(PIP) install lib/kibana
$(PIP) install lib/kql
.PHONY: hunting-deps
hunting-deps: $(VENV)
@echo "Installing all dependencies..."
$(PIP) install .[hunting]
.PHONY: pytest
pytest: $(VENV) deps
$(PYTHON) -m detection_rules test
.PHONY: license-check
license-check: $(VENV) deps
@echo "LICENSE CHECK"
$(PYTHON) -m detection_rules dev license-check
.PHONY: lint
lint: $(VENV) deps
@echo "LINTING"
$(PYTHON) -m ruff check --exit-non-zero-on-fix
$(PYTHON) -m ruff format --check
$(PYTHON) -m pyright
.PHONY: test
test: $(VENV) lint pytest
.PHONY: test-cli
test-cli: $(VENV) deps
@echo "Executing test_cli script..."
@./detection_rules/etc/test_cli.bash
.PHONY: test-remote-cli
test-remote-cli: $(VENV) deps
@echo "Executing test_remote_cli script..."
@./detection_rules/etc/test_remote_cli.bash
.PHONY: test-hunting-cli
test-hunting-cli: $(VENV) hunting-deps
@echo "Executing test_hunting_cli script..."
@./detection_rules/etc/test_hunting_cli.bash
.PHONY: release
release: deps
@echo "RELEASE: $(APP_NAME)"
$(PYTHON) -m detection_rules dev build-release --generate-navigator
rm -rf dist
mkdir dist
cp -r releases/*/*.zip dist/