def execute()

in dusty/scanners/dast/zap/scanner.py [0:0]


    def execute(self):
        """ Run the scanner """
        try:
            self._start_zap()
            if not self._wait_for_zap_start():
                log.error("ZAP failed to start")
                error = Error(
                    tool=self.get_name(),
                    error="ZAP failed to start",
                    details="ZAP daemon failed to start"
                )
                self.errors.append(error)
                return
            log.info("Target: %s", self.config.get("target"))
            self._prepare_context()
            self._setup_scan_policy()
            self._spider()
            self._wait_for_passive_scan()
            self._ajax_spider()
            self._wait_for_passive_scan()
            self._active_scan()
            self._wait_for_passive_scan()
        except:
            log.exception("Exception during ZAP scanning")
            error = Error(
                tool=self.get_name(),
                error=f"Exception during ZAP scanning",
                details=f"```\n{traceback.format_exc()}\n```"
            )
            self.errors.append(error)
        finally:
            try:
                # Get report
                log.info("Getting ZAP report")
                zap_report = self._zap_api.core.jsonreport()
                # Parse JSON
                log.info("Processing findings")
                parse_findings(zap_report, self)
            except:
                log.exception("Exception during ZAP findings processing")
                error = Error(
                    tool=self.get_name(),
                    error=f"Exception during ZAP findings processing",
                    details=f"```\n{traceback.format_exc()}\n```"
                )
                self.errors.append(error)
            self._save_intermediates()
            pkg_resources.cleanup_resources()
            self._stop_zap()