{"id":29338,"date":"2026-09-15T05:52:44","date_gmt":"2026-09-15T05:52:44","guid":{"rendered":"https:\/\/umang.pk\/2026\/09\/15\/%d8%a2%d9%be-%da%a9%db%92-%da%a9%d9%88%da%88-%d9%85%db%8c%da%ba-%d8%ad%d9%81%d8%a7%d8%b8%d8%aa%db%8c-%d8%ae%d8%b7%d8%b1%d8%a7%d8%aa-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d8%aa%d9%84%d8%a7%d8%b4\/"},"modified":"2026-09-15T05:52:44","modified_gmt":"2026-09-15T05:52:44","slug":"%d8%a2%d9%be-%da%a9%db%92-%da%a9%d9%88%da%88-%d9%85%db%8c%da%ba-%d8%ad%d9%81%d8%a7%d8%b8%d8%aa%db%8c-%d8%ae%d8%b7%d8%b1%d8%a7%d8%aa-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d8%aa%d9%84%d8%a7%d8%b4","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/09\/15\/%d8%a2%d9%be-%da%a9%db%92-%da%a9%d9%88%da%88-%d9%85%db%8c%da%ba-%d8%ad%d9%81%d8%a7%d8%b8%d8%aa%db%8c-%d8%ae%d8%b7%d8%b1%d8%a7%d8%aa-%da%a9%d9%88-%da%a9%db%8c%d8%b3%db%92-%d8%aa%d9%84%d8%a7%d8%b4\/","title":{"rendered":"\u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u062d\u0641\u0627\u0638\u062a\u06cc \u062e\u0637\u0631\u0627\u062a \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0622\u067e \u06a9\u06cc \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u06a9 \u067e\u06c1\u0646\u0686 \u062c\u0627\u0626\u06cc\u06ba\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u0627\u0633 \u0648\u0642\u062a \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u062b\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0641\u06cc\u0688 \u0628\u06cc\u06a9 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06a9\u06c1 \u06a9\u0648\u0688 \u0627\u0646 \u06a9\u06d2 \u0630\u06c1\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0628\u06be\u06cc \u0628\u06be\u06cc \u062a\u0627\u0632\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0627\u0633\u0646\u0627\u062f \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba\u060c CI \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u060c \u06cc\u0627 \u062f\u062e\u0648\u0644 \u06a9\u06d2 \u0679\u06cc\u0633\u0679 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0627\u0645 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u0648 \u0628\u0627\u0626\u06cc\u06ba \u062c\u0627\u0646\u0628 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0633\u0679\u06cc\u0679\u06a9 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0679\u06cc\u0633\u0679\u0646\u06af (SAST) \u06a9\u0648 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 Git \u067e\u0631\u06cc \u06a9\u0645\u0679 \u06c1\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba\u060c \u0622\u067e DevSkim CLI \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 <code>pre-commit<\/code> \u0644\u06c1\u0630\u0627\u060c \u0627\u0633\u0679\u06cc\u062c\u0688 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0644\u0646\u0679 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u062e\u0641\u06cc\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u060c \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u06cc\u0679 \u0627\u067e \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 CI \u067e\u0631 \u0648\u06c1\u06cc \u0686\u06cc\u06a9 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-what-well-cover\">\u06c1\u0645 \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/h3>\n<h2 id=\"heading-why-pre-commit-security-scanning\">\u06c1\u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06a9\u0645\u0679 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0633\u06a9\u06cc\u0646\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc\u0648\u06ba \u06c1\u06d2\u061f<\/h2>\n<p>\u0627\u06cc\u06a9 \u067e\u0631\u06cc \u06a9\u0645\u0679 \u06c1\u06a9 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06af\u0679 \u06a9\u0645\u0679 \u0628\u0646\u0627\u0626\u06d2\u06d4 \u06cc\u06c1 \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u067e\u0627\u0633 \u0648\u0631\u0688\u0632\u060c \u0679\u0648\u06a9\u0646\u0632\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0633\u0679\u0631\u0646\u06af\u0632\u060c \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 \u062e\u0641\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba\u060c \u06a9\u0645\u0632\u0648\u0631 \u0627\u0646 \u067e\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642\u060c \u062e\u0637\u0631\u0646\u0627\u06a9 \u0641\u0627\u0626\u0644\u0648\u06ba \u06cc\u0627 \u0639\u0645\u0644 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u06d2\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0632\u0628\u0627\u0646 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u06cc\u0646\u0679\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u067e\u06a9\u0691\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0642\u0635\u062f CI \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af \u06cc\u0627 \u062f\u0633\u062a\u06cc \u062c\u0627\u0626\u0632\u06c1 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u0642\u0635\u062f \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0648\u0644\u067e\u0631\u0632 \u06a9\u0648 \u062c\u0644\u062f \u0627\u0632 \u062c\u0644\u062f \u0639\u0645\u0644\u06cc \u0644\u0645\u062d\u06d2 \u0645\u06cc\u06ba \u0641\u0648\u0631\u06cc\u060c \u0642\u0627\u0628\u0644 \u0639\u0645\u0644 \u062a\u0627\u062b\u0631\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0635\u062d\u062a \u0645\u0646\u062f \u0645\u0627\u0688\u0644 \u06c1\u0648 \u06af\u0627:<\/p>\n<pre><code class=\"language-text\">Developer workstation\n  -> Pre-commit security checks\n  -> Pull request review\n  -> CI\/CD SAST and dependency scanning\n  -> Runtime monitoring and vulnerability management\n<\/code><\/pre>\n<h2 id=\"heading-what-is-devskim\">DevSkim \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>DevSkim \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u0679 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u0627\u06cc\u06a9 \u0633\u06cc\u06a9\u0648\u0631\u0679\u06cc \u0644\u0646\u0679\u0631 \u06c1\u06d2. IDE \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0627\u0648\u0631 \u06a9\u0631\u0627\u0633 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 CLI \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u060c \u06cc\u06c1 \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0648\u0688\u0646\u06af \u067e\u06cc\u0679\u0631\u0646\u0632 \u06a9\u0648 \u062c\u06be\u0646\u0688\u0627 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u0627\u0628\u0644 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0635\u0648\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06af\u0627\u0631\u0688\u0631\u06cc\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc\u0648\u06ba \u062e\u0637\u0631\u0646\u0627\u06a9 \u06c1\u06cc\u06ba\u06d4 \u0642\u0648\u0627\u0639\u062f \u062e\u0637\u0631\u0646\u0627\u06a9 API \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644\u060c \u06a9\u0645\u0632\u0648\u0631 \u0627\u0646\u06a9\u0631\u067e\u0634\u0646\u060c \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 \u0688\u06cc \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u06a9\u0645\u0632\u0648\u0631 TLS \u06cc\u0627 \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642\u060c \u0627\u0648\u0631 \u0645\u0645\u06a9\u0646\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u06d2 \u062e\u0637\u0631\u0627\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u06cc\u06a9 \u0641\u0631\u0642 \u0627\u06c1\u0645 \u06c1\u06d2. DevSkim \u0627\u06cc\u06a9 \u0633\u06cc\u06a9\u0648\u0631\u0679\u06cc \u0644\u0646\u0679\u0631 \u06c1\u06d2\u060c \u0627\u06cc\u06a9 \u062e\u0641\u06cc\u06c1 \u0633\u06a9\u06cc\u0646\u0631 \u0646\u06c1\u06cc\u06ba. \u06cc\u06c1 \u06a9\u0686\u06be \u0639\u0627\u0645 \u0627\u0633\u0646\u0627\u062f\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u0648 \u0628\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0631\u06cc\u06af\u0648\u0644\u0631 \u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0634\u0646 \u067e\u06cc\u0679\u0631\u0646 \u06c1\u06cc\u06ba \u062c\u0648 \u0679\u0648\u06a9\u0646\u0632 \u06a9\u06cc \u0637\u0631\u062d \u0644\u0645\u0628\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0646\u0634\u0627\u0646\u06c1 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u06cc\u0645\u06cc\u06ba \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 DevSkim \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u062e\u0641\u06cc\u06c1 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u06d2 \u0622\u0644\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0691\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u06cc\u0633\u06d2 Gitleaks\u060c Discover-secrets\u060c \u06cc\u0627 TruffleHog\u06d4 Gitleaks \u0627\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0627\u0632 \u062f\u0648\u0646\u0648\u06ba \u0633\u0631\u06a9\u0627\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0634\u0627\u0626\u0639 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>pre-commit<\/code> \u06c1\u06a9\u0633 \u06c1\u06cc\u06ba \u0644\u06c1\u0630\u0627 \u0622\u067e \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u06a9\u0648 \u0627\u0633 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u06cc\u06ba \u0688\u0627\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06af\u0627\u0626\u06cc\u0688 Gitleaks \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0633\u06a9\u06cc\u0646\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u06cc\u06a9 \u062e\u0637\u0631\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06a9\u0648\u0688 \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u06a9\u06cc \u0637\u0631\u0641 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0633 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>Git\u060c Python 3\u060c \u0627\u0648\u0631 .NET SDKs \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062c\u0646 \u067e\u0631 DevSkim \u06a9\u0627 CLI \u062a\u0642\u0633\u06cc\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>pre-commit<\/code>:<\/p>\n<pre><code class=\"language-bash\">pip install pre-commit\n<\/code><\/pre>\n<p>DevSkim CLI \u06a9\u0648 .NET \u06af\u0644\u0648\u0628\u0644 \u0679\u0648\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">dotnet tool install --global Microsoft.CST.DevSkim.CLI\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e .NET SDK \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648\u060c \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0628\u0627\u0626\u0646\u0631\u06cc\u0632 DevSkim \u06a9\u06d2 \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u06d2 \u0635\u0641\u062d\u06c1 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0646\u0626\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba \u062f\u0648\u0646\u0648\u06ba \u062a\u0646\u0635\u06cc\u0628\u0627\u062a \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062f\u06c1 \u0645\u0648\u0627\u062f \u0627\u0679\u06be\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 <code>PATH<\/code>:<\/p>\n<pre><code class=\"language-bash\">pre-commit --version\ndevskim --version\n<\/code><\/pre>\n<p>\u0679\u0627\u0626\u067e \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0627\u0646 \u0644\u0627\u0626\u0646 \u0641\u06cc\u0688 \u0628\u06cc\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c DevSkim VS Code \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0628\u06be\u06cc \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 CLI \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0633\u06d2 \u06af\u0679 \u06c1\u06a9\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-create-a-pre-commit-configuration\">\u067e\u0631\u06cc \u06a9\u0645\u0679 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h2>\n<p>DevSkim \u06a9\u0627 CLI \u0628\u0639\u062f \u0645\u06cc\u06ba \u0648\u0627\u062d\u062f \u0630\u0631\u06cc\u0639\u06c1 \u0631\u0627\u0633\u062a\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>-I<\/code>\u062c\u0628\u06a9\u06c1 <code>pre-commit<\/code> \u0686\u0644\u0627\u0626\u06cc \u062c\u0627 \u0631\u06c1\u06cc \u06a9\u0645\u0627\u0646\u0688 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u062a\u06cc\u0627\u0631 \u0641\u0627\u0626\u0644 \u0646\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06af\u0632\u0631\u0646\u0627 <code>devskim analyze<\/code> \u0644\u06c1\u0630\u0627 \u062c\u06cc\u0633\u06d2 \u06c1\u06cc \u0627\u06cc\u06a9 \u06a9\u0645\u0679 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633\u06d2 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062e\u062a\u0645 \u06a9\u0631\u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u0622\u0633\u0627\u0646 \u062d\u0644 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0631\u06cc\u067e\u0631 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0646\u0627\u0645 \u067e\u0631 \u0627\u06cc\u06a9 \u0628\u0627\u0631 DevSkim \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0646\u0627\u0646\u0627 <code>scripts\/run-devskim.py<\/code> \u0630\u062e\u06cc\u0631\u06c1 \u0633\u06d2:<\/p>\n<pre><code class=\"language-python\">import subprocess\nimport sys\n\nexit_code = 0\n\nfor filename in sys.argv[1:]:\n    result = subprocess.run([\"devskim\", \"analyze\", \"-I\", filename])\n    exit_code = exit_code or result.returncode\n\nsys.exit(exit_code)\n<\/code><\/pre>\n<p>\u0627\u0628\u06be\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba <code>.pre-commit-config.yaml<\/code> \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc \u062c\u0691 \u0633\u06d2:<\/p>\n<pre><code class=\"language-yaml\">repos:\n  - repo: local\n    hooks:\n      - id: devskim\n        name: DevSkim security lint\n        entry: python scripts\/run-devskim.py\n        language: system\n        types_or: [python, javascript, typescript, json, yaml]\n        pass_filenames: true\n\n  - repo: https:\/\/github.com\/gitleaks\/gitleaks\n    rev: v8.30.1\n    hooks:\n      - id: gitleaks\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u0627 \u06c1\u06a9 \u062f\u0631\u062c \u0634\u062f\u06c1 \u0627\u0642\u0633\u0627\u0645 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u062a\u06cc\u0627\u0631 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u062e\u0644\u0627\u0641 DevSkim \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0648\u0633\u0631\u0627 \u062e\u0641\u06cc\u06c1 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 Gitleaks \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633\u06d2 DevSkim \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0686\u06cc\u0632\u0648\u06ba \u06a9\u0648 \u0622\u0633\u0627\u0646 \u0631\u06a9\u06be\u0646\u06d2 \u0627\u0648\u0631 \u06c1\u0631 \u06a9\u0645\u0679 \u067e\u0631 \u067e\u0648\u0631\u06cc \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0631\u06cc\u067e\u0631 \u06a9\u0648 \u06af\u0631\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u062c\u0627\u0645\u062f \u0631\u0627\u0633\u062a\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-yaml\">      - id: devskim\n        name: DevSkim security lint\n        entry: devskim analyze -I .\n        language: system\n        pass_filenames: false\n<\/code><\/pre>\n<p>\u0627\u0633 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0622\u067e \u06a9\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u06c1\u0648\u062a\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0627\u0635\u0644 \u062a\u0627\u0631\u06cc\u062e \u06c1\u06d2 \u062a\u0648 \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u0627\u06cc\u06a9 \u0628\u06c1\u062a\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-install-the-git-hook\">\u06af\u0679 \u06c1\u06a9 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0633\u06d2 \u0627\u067e\u0646\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u06a9\u06cc \u062c\u0691 \u0633\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">pre-commit install\n<\/code><\/pre>\n<p>\u0627\u0628 \u06c1\u0631 <code>git commit<\/code> \u062a\u0631\u062a\u06cc\u0628 \u0634\u062f\u06c1 \u0686\u06cc\u06a9 \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0627\u067e\u0646\u06d2 \u067e\u0648\u0631\u06d2 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06c1\u06a9\u0633 \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">pre-commit run --all-files\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u062c\u0628 \u06a9\u0633\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0679\u0648\u0644\u0632 \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06c1\u0645 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0646\u062a\u0627\u0626\u062c \u06a9\u06d2 \u0645\u0646\u062a\u0638\u0631 \u06c1\u06cc\u06ba\u06d4 \u067e\u0631\u0627\u0646\u06d2 \u0630\u062e\u06cc\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0627\u06a9\u062b\u0631 \u0627\u06cc\u0633\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0641\u0627\u0638\u062a\u06cc \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u0648 \u067e\u06cc\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-verify-the-setup-with-a-deliberate-failure\">\u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642<\/h2>\n<p>\u06c1\u06a9 \u067e\u0631 \u0628\u06be\u0631\u0648\u0633\u06c1 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u0627\u0645\u06cc \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba <code>insecure-example.js<\/code> \u06a9\u0645\u0632\u0648\u0631 \u06c1\u06cc\u0634\u0646\u06af \u06a9\u0627\u0644\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a:<\/p>\n<pre><code class=\"language-javascript\">const crypto = require(\"crypto\");\n\nconst hash = crypto.createHash(\"md5\").update(\"password\").digest(\"hex\");\n<\/code><\/pre>\n<p>\u062a\u06cc\u0627\u0631\u06cc \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0639\u0632\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git add insecure-example.js\ngit commit -m \"Test security hooks\"\n<\/code><\/pre>\n<p>\u0639\u06c1\u062f \u0646\u0627\u0645\u06d2 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 <code>pre-commit<\/code> \u0641\u06cc \u06c1\u06a9 \u0627\u06cc\u06a9 \u0633\u0679\u06cc\u0679\u0633 \u0644\u0627\u0626\u0646 \u067e\u0631\u0646\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u067e\u06be\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u06a9 \u06a9\u06cc ID\u060c \u0627\u0633 \u06a9\u0627 \u0627\u06cc\u06af\u0632\u0679 \u06a9\u0648\u0688\u060c \u0627\u0648\u0631 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u0646\u062a\u0627\u0626\u062c\u06d4<\/p>\n<pre><code class=\"language-text\">DevSkim security lint....................................................Failed\n- hook id: devskim\n- exit code: 1\n\n[DevSkim output listing the weak hash finding appears here]\n<\/code><\/pre>\n<p>DevSkim \u06a9\u06d2 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u062a\u0646 \u0645\u06cc\u06ba \u0648\u0631\u0698\u0646 \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0642\u0637\u0639\u06cc \u0634\u06a9\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0635\u0648\u0644 ID\u060c \u0634\u062f\u062a \u06a9\u0627 \u0644\u06cc\u0628\u0644\u060c \u0641\u0627\u0626\u0644 \u0627\u0648\u0631 \u0644\u0627\u0626\u0646 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u062c\u0648 \u0686\u06cc\u0632 \u0627\u06c1\u0645 \u06c1\u06d2 \u0648\u06c1 \u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0635\u0641\u0631 \u0627\u06cc\u06af\u0632\u0679 \u06a9\u0648\u0688 \u0627\u0648\u0631 \u0628\u0644\u0627\u06a9 \u0634\u062f\u06c1 \u06a9\u0645\u0679 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u06c1\u06a9 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0637\u0648\u0631 \u067e\u0631 \u06af\u0632\u0631 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0633\u06a9\u06cc\u0646 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">devskim analyze -I insecure-example.js\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u06c1\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2 <code>.pre-commit-config.yaml<\/code> DevSkim \u0646\u06c1\u06cc\u06ba.<\/p>\n<h2 id=\"heading-example-catching-a-hardcoded-secret\">\u0645\u062b\u0627\u0644: \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u0631\u0627\u0632 \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u0627<\/h2>\n<p>\u0631\u0627\u0632 \u0648\u06c1 \u06c1\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0644\u0646\u0679\u0631\u0632 \u0627\u0648\u0631 \u062e\u0641\u06cc\u06c1 \u0633\u06a9\u06cc\u0646\u0631 \u0641\u0631\u0642 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 DevSkim \u06a9\u06d2 \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0627\u0638\u06c1\u0627\u0631 \u067e\u0631 \u0645\u0628\u0646\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0679\u0648\u06a9\u0646\u0632 \u06a9\u06cc \u0637\u0631\u062d \u0644\u0645\u0628\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u06c1\u062f\u0641 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0627\u06cc\u06a9 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631 \u0633\u0679\u0631\u0646\u06af \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06af\u0632\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0642\u062f\u0631 \u062c\u0648 \u0627\u0635\u0644 \u06a9\u0644\u06cc\u062f \u06a9\u06cc \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2 \u0627\u06cc\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0627\u0645\u062a\u062d\u0627\u0646 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const apiKey = \"4f2a9c1e7b6d3a8f0c5e9b2d7a41c6\";\n<\/code><\/pre>\n<p>\u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06c1\u06a9 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">git add config.js\npre-commit run\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0641\u06cc\u06c1 \u0633\u06a9\u06cc\u0646\u0631 \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 Gitleaks \u0622\u067e \u06a9\u06d2 \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0627\u06cc\u0646\u0679\u0631\u0648\u067e\u06cc \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u067e\u0691\u062a\u0627\u0644 \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06c1\u06a9 \u0633\u06d2 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0628\u0644\u0627\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0633\u0679\u06cc\u0679\u0633 \u0644\u0627\u0626\u0646 \u0646\u0627\u06a9\u0627\u0645\u06cc \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0635\u0641\u0631 \u0627\u06cc\u06af\u0632\u0679 \u06a9\u0648\u0688 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06d2 \u06af\u06cc\u06d4 \u06cc\u06c1\u0627\u06ba\u060c DevSkim \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0627\u0633 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0628\u0648\u0646\u0633 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u06cc\u06ba \u062c\u0633 \u067e\u0631 \u0622\u067e \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0679\u0648\u0644\u0632 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062d\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0633\u0648\u0631\u0633 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0644\u06d2 \u062c\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const apiKey = process.env.PAYMENT_API_KEY;\n<\/code><\/pre>\n<p>\u0627\u0635\u0644 \u0642\u062f\u0631 \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u0646\u0638\u0648\u0631 \u0634\u062f\u06c1 \u062e\u0641\u06cc\u06c1 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u062c\u06cc\u0633\u06d2 Azure Key Vault\u060c GitHub \u0627\u06cc\u06a9\u0634\u0646 \u0633\u06cc\u06a9\u0631\u0679\u0633\u060c \u06cc\u0627 \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0645\u0646\u0638\u0645 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0645\u06cc\u06ba \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0686\u06be\u0648\u0679\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06d2 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0633\u06cc \u0631\u0627\u0632 \u06a9\u0648 \u06c1\u0679\u0627\u0646\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0634\u06a9\u0644 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u067e \u06a9\u06cc Git \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e\u060c \u0646\u0642\u0644\u06cc\u06ba\u060c CI \u0644\u0627\u06af\u0632\u060c \u0627\u0648\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0631\u0627\u0632 \u0645\u0648\u062c\u0648\u062f \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u06c1 \u062f\u0648\u0646\u0648\u06ba \u06c1\u06a9\u0633 \u062a\u0648\u0642\u0639 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0679\u06cc\u0633\u0679 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u06ba\u06d4 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u06a9\u0648 \u062c\u0627\u0646\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u0627\u0635\u0644\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-keep-hooks-fast-and-focused\">\u06c1\u06a9 \u06a9\u0648 \u062a\u06cc\u0632 \u0627\u0648\u0631 \u0645\u0631\u06a9\u0648\u0632 \u0631\u06a9\u06be\u06cc\u06ba<\/h2>\n<p>\u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0633\u0633\u062a \u06c1\u06a9\u0633 \u06a9\u0648 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u06cc \u0645\u0642\u0627\u0645\u06cc \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u0627\u0648\u0631 \u0627\u0639\u0644\u06cc\u0670 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u067e\u0631 \u062a\u0648\u062c\u06c1 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0635\u0631\u0641 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc \u06af\u0626\u06cc \u06cc\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u06a9\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u067e\u06be\u0631 \u0627\u067e\u0646\u06d2 CI \u06a9\u06d2 \u0645\u0632\u06cc\u062f \u0648\u0633\u06cc\u0639 \u0627\u0633\u06a9\u06cc\u0646\u0632 \u06a9\u0627 \u0634\u06cc\u0688\u0648\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0634\u062f\u062a \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0631\u0627\u0632 \u06cc\u0627 \u062d\u0633\u0627\u0633\u060c \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 APIs \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644\u06d4 \u06a9\u0645 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0646\u0638\u0631\u062b\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u067e\u0648\u0631\u0679 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06a9\u06c1 \u0679\u06cc\u0645 \u0634\u0648\u0631 \u0645\u0686\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0648\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u0648 \u062c\u0627\u0626\u0632 \u062f\u0628\u0627\u0646\u06d2 \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-handling-false-positives\">\u063a\u0644\u0637 \u0645\u062b\u0628\u062a \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af<\/h2>\n<p>\u062c\u0627\u0645\u062f \u062a\u062c\u0632\u06cc\u06c1 \u0645\u06cc\u06ba \u063a\u0644\u0637 \u0645\u062b\u0628\u062a \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0627\u06cc\u06a9 \u063a\u0644\u0637 \u062c\u0648\u0627\u0628 \u06c1\u0648\u06af\u0627\u06d4 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0646\u062a\u0627\u0626\u062c \u0641\u0627\u0626\u062f\u06c1 \u0645\u0646\u062f \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u062d\u0642\u06cc\u0642\u06cc \u062e\u0637\u0631\u06c1 \u06c1\u06d2 \u062a\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u062c\u0628 \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u062a\u0646\u06af \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u0648 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0627 \u0628\u0627\u0642\u0627\u0639\u062f\u06af\u06cc \u0633\u06d2 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0648\u0633\u06cc\u0639 \u0627\u062e\u0631\u0627\u062c \u0633\u06d2 \u0628\u0686\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u067e\u0648\u0631\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u0632 \u06a9\u0648 \u0686\u06be\u0648\u0691\u0646\u0627\u060c \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u06a9\u0648\u0626\u06cc \u0648\u0627\u0636\u062d \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0648\u062c\u06c1 \u0646\u06c1 \u06c1\u0648\u06d4 \u0648\u0633\u06cc\u0639 \u0627\u062e\u0631\u0627\u062c \u0627\u0646\u062f\u06be\u0627 \u062f\u06be\u0628\u06d2 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-add-security-checks-to-ci-too\">\u0633\u06cc \u0622\u0626\u06cc \u0645\u06cc\u06ba \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0686\u06cc\u06a9 \u0628\u06be\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u067e\u0631\u06cc \u06a9\u0645\u0679 \u06c1\u06a9\u0633 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06d2 \u062a\u0627\u062b\u0631\u0627\u062a \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0646\u0627\u0641\u0630 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06cc\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06a9 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">git commit --no-verify\n<\/code><\/pre>\n<p>\u0627\u0633\u06cc \u0644\u06cc\u06d2 \u0633\u06cc \u0622\u0626\u06cc \u067e\u0631 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u06cc\u0627 \u0645\u0633\u0627\u0648\u06cc \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0686\u06cc\u06a9 \u0686\u0644\u0627\u0626\u06d2 \u062c\u0627\u0626\u06cc\u06ba\u06d4 \u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 GitHub \u0627\u06cc\u06a9\u0634\u0646 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0679\u0648\u0644\u0632 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0637\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.github\/workflows\/security.yml<\/code>:<\/p>\n<pre><code class=\"language-yaml\">name: Security Checks\n\non:\n  pull_request:\n  push:\n    branches: [main]\n\njobs:\n  scan:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n    steps:\n      - uses: actions\/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - uses: actions\/setup-dotnet@v4\n        with:\n          dotnet-version: \"8.0.x\"\n\n      - name: Install DevSkim\n        run: dotnet tool install --global Microsoft.CST.DevSkim.CLI\n\n      - name: Run DevSkim\n        run: devskim analyze -I . -f sarif -O devskim.sarif\n\n      - name: Upload DevSkim results\n        uses: github\/codeql-action\/upload-sarif@v3\n        with:\n          sarif_file: devskim.sarif\n\n      - name: Run Gitleaks\n        uses: gitleaks\/gitleaks-action@v2\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0686\u0646\u062f \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 <code>fetch-depth: 0<\/code> Gitleaks \u0648\u06c1 \u0645\u06a9\u0645\u0644 \u062a\u0627\u0631\u06cc\u062e \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u0622\u067e \u06a9\u0648 \u0645\u0627\u0636\u06cc \u06a9\u06d2 \u0648\u0639\u062f\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0646\u06c1 \u06a9\u06c1 \u0635\u0631\u0641 \u062a\u062c\u0627\u0648\u06cc\u0632\u06d4 SARIF \u0627\u067e \u0644\u0648\u0688\u0632 \u0622\u067e \u06a9\u06d2 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06d2 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0679\u06cc\u0628 \u067e\u0631 DevSkim \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u0628\u06be\u06cc\u062c\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0627\u06a9\u06c1 \u0622\u067e \u0627\u0646\u06c1\u06cc\u06ba \u0627\u067e\u0646\u06d2 \u0628\u0644\u0688 \u0644\u0627\u06af \u0645\u06cc\u06ba \u062f\u0641\u0646 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 GitHub \u067e\u0631 \u0627\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06d2 \u0633\u06a9\u06cc\u06ba\u06d4 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u0679 \u0627\u06cc\u06a9 DevSkim \u0627\u06cc\u06a9\u0634\u0646 \u0628\u06be\u06cc \u0634\u0627\u0626\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0622\u067e \u062e\u0648\u062f CLI \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u06c1\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u06c1 \u06a9\u0648\u0688 \u067e\u0631 \u062a\u06cc\u0632 \u0631\u0641\u062a\u0627\u0631 \u0631\u0627\u0626\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u06cc \u06a9\u0645\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u06cc\u0644\u06cc\u0632 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u060c SAST \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u067e\u0644 \u0631\u06cc\u06a9\u0648\u0626\u0633\u0679 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u060c \u062e\u0641\u06cc\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af \u0627\u0648\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06cc \u062c\u0627\u0646\u0686\u060c \u0645\u06a9\u0645\u0644 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af \u0627\u0648\u0631 \u0631\u067e\u0648\u0631\u0679\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0646 \u0628\u0631\u0627\u0646\u0686 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631\u060c \u0627\u0648\u0631 \u0627\u06c1\u0645 \u0646\u062a\u0627\u0626\u062c \u06a9\u06d2 \u0644\u06cc\u06d2 \u06af\u06cc\u0679 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u067e\u0631\u062a\u0648\u06ba \u0648\u0627\u0644\u0627 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u0627\u0648\u0631 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u06a9\u0648 \u0645\u062a\u0648\u0627\u0632\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-practical-rollout-tips\">\u0639\u0645\u0644\u06cc \u0631\u0648\u0644 \u0622\u0624\u0679 \u0679\u067e\u0633<\/h2>\n<p>\u0646\u0626\u06d2 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u06cc\u0627 \u062f\u0648 \u0630\u062e\u06cc\u0631\u0648\u06ba \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0646\u062a\u0627\u0626\u062c \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba\u06d4 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0635\u0631\u0641 \u0627\u0639\u0644\u06cc\u0670 \u0627\u0639\u062a\u0645\u0627\u062f\u060c \u0627\u0639\u0644\u06cc\u0670 \u0627\u062b\u0631 \u0648\u0627\u0644\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u060c \u067e\u06be\u0631 \u0627\u067e\u0646\u06d2 \u0646\u062a\u0627\u0626\u062c \u0627\u0648\u0631 \u0627\u0635\u0644\u0627\u062d\u0627\u062a \u06a9\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0688\u06cc\u0648\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u06cc\u0626\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0628\u0627\u0631 \u0628\u0627\u0631 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0633\u0631\u0627\u063a \u0644\u06af\u0627 \u06a9\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0648\u0688\u0646\u06af \u06a9\u06cc \u062a\u0639\u0644\u06cc\u0645 \u06a9\u06cc \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0635\u0631\u0641 \u062f\u0631\u06cc\u0627\u0641\u062a\u0648\u06ba \u067e\u0631 \u062a\u0648\u062c\u06c1 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u067e\u0646\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0646\u0638\u0631 \u062b\u0627\u0646\u06cc \u06a9\u06d2 \u0627\u0648\u0642\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0642\u0635\u062f \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0679\u0648\u0644 \u0628\u0646\u0627\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u062c\u0633\u06d2 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0628\u0644\u06a9\u06c1 \u0688\u06cc\u0648\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0645\u062d\u0641\u0648\u0638 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-final-thoughts\">\u062d\u062a\u0645\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a<\/h2>\n<p>\u062d\u0641\u0627\u0638\u062a\u06cc \u0679\u0648\u0644\u0632 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0642\u06cc\u0645\u062a\u06cc \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u0648\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u067e\u0631\u06cc \u06a9\u0645\u0679 \u06c1\u06a9\u0633 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0648\u0688\u0646\u06af \u0641\u06cc\u0688 \u0628\u06cc\u06a9 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 CI \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0633\u0679\u0645 \u0627\u0648\u0631 \u0648\u0633\u06cc\u0639 \u062a\u0631 \u06a9\u0648\u0631\u06cc\u062c \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u06a9\u0648\u0631\u06cc\u062c \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>DevSkim Shift-Left \u0633\u06cc\u06a9\u0648\u0631\u0679\u06cc \u067e\u0631\u06cc\u06a9\u0679\u0633\u0632 \u0628\u0646\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0641\u06cc\u062f \u06c1\u0644\u06a9\u0627 \u067e\u06be\u0644\u06a9\u0627 \u0627\u0646\u0679\u0631\u06cc \u067e\u0648\u0627\u0626\u0646\u0679 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062c\u0628 \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u062e\u0641\u06cc\u06c1 \u0633\u06a9\u06cc\u0646\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0644\u0646\u0679\u0631\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062e\u0627\u0644\u06cc \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062e\u0644\u0627 \u06a9\u0648 \u067e\u064f\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0686\u06be\u0648\u0679\u06cc \u0634\u0631\u0648\u0639\u0627\u062a \u06a9\u0631\u06cc\u06ba\u060c \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0633\u06a9\u06cc\u0646\u0632 \u06a9\u0648 \u062a\u06cc\u0632 \u0631\u06a9\u06be\u06cc\u06ba\u060c \u0627\u0648\u0631 CI \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0648\u0688\u0646\u06af \u0631\u06c1\u0646\u0645\u0627 \u062e\u0637\u0648\u0637 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06a9\u062b\u0631 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u062d\u0641\u0627\u0638\u062a\u06cc \u06a9\u0646\u0679\u0631\u0648\u0644 \u0648\u06c1 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u067e\u06c1\u0644\u06d2 \u062c\u06af\u06c1 \u067e\u0631 \u0645\u0633\u0627\u0626\u0644 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u0627\u0633 \u0648\u0642\u062a \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u062b\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0641\u06cc\u0688 \u0628\u06cc\u06a9 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06a9\u06c1 \u06a9\u0648\u0688 \u0627\u0646 \u06a9\u06d2 \u0630\u06c1\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0628\u06be\u06cc \u0628\u06be\u06cc \u062a\u0627\u0632\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0627\u0633\u0646\u0627\u062f \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba\u060c CI \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u060c \u06cc\u0627 \u062f\u062e\u0648\u0644 \u06a9\u06d2 \u0679\u06cc\u0633\u0679 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u063a\u06cc\u0631 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-29338","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/29338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=29338"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/29338\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=29338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=29338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=29338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}