এক্সটেনশন সহ জেমিনি সিএলআই-এর মাধ্যমে কোড পর্যালোচনা এবং নিরাপত্তা বিশ্লেষণ

১. 📖 ভূমিকা

194a7f6f1a93b614.png সম্পর্কে

এই কোডল্যাবে, আপনি জেমিনি সিএলআই-এর মৌলিক বিষয়গুলি শিখবেন এবং আপনার সফ্টওয়্যার ডেভেলপমেন্ট ওয়ার্কফ্লোতে এর কোড-রিভিউ এবং নিরাপত্তা বিশ্লেষণ এক্সটেনশনটি ব্যবহার করবেন।

তুমি কি শিখবে

  • জেমিনি সিএলআই কীভাবে সেটআপ করবেন
  • জেমিনি সিএলআই কীভাবে কনফিগার করবেন
  • জেমিনি সিএলআই এক্সটেনশন কিভাবে ইনস্টল করবেন
  • কোড পর্যালোচনা এবং নিরাপত্তা বিশ্লেষণের জন্য জেমিনি সিএলআই এক্সটেনশন কীভাবে ব্যবহার করবেন
  • জেমিনি সিএলআই-এর জন্য এমসিপি কীভাবে কনফিগার করবেন
  • CI/CD তে জেমিনি CLI কিভাবে পরিদর্শন করবেন

তোমার যা লাগবে

  • ক্রোম ওয়েব ব্রাউজার
  • একটি জিমেইল অ্যাকাউন্ট
  • বিলিং অ্যাকাউন্ট সক্ষম থাকা একটি ক্লাউড প্রজেক্ট

২. 🚀 ওয়ার্কশপ ডেভেলপমেন্ট সেটআপ প্রস্তুত করা

ধাপ ১: ক্লাউড কনসোলে অ্যাক্টিভ প্রজেক্ট নির্বাচন করুন

গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রোজেক্ট নির্বাচন করুন বা তৈরি করুন (আপনার কনসোলের উপরের বাম অংশটি দেখুন)

3a143645e891087.png সম্পর্কে

এটিতে ক্লিক করুন, এবং আপনি আপনার সমস্ত প্রকল্পের তালিকা দেখতে পাবেন যেমন এই উদাহরণে,

59e03077d1ba2039.png সম্পর্কে

লাল বাক্সে যে মানটি নির্দেশিত তা হল PROJECT ID এবং এই মানটি পুরো টিউটোরিয়াল জুড়ে ব্যবহার করা হবে।

আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। এটি পরীক্ষা করতে, আপনার উপরের বাম বারে বার্গার আইকন ☰ এ ক্লিক করুন যা নেভিগেশন মেনু দেখায় এবং বিলিং মেনুটি খুঁজে বের করুন।

973396bb9d9c3523.png সম্পর্কে

837e03fb7edafdc4.png সম্পর্কে

যদি আপনি বিলিং / ওভারভিউ শিরোনামের অধীনে "গুগল ক্লাউড প্ল্যাটফর্ম ট্রায়াল বিলিং অ্যাকাউন্ট" দেখতে পান ( আপনার ক্লাউড কনসোলের উপরের বাম অংশ ), তাহলে আপনার প্রকল্পটি এই টিউটোরিয়ালের জন্য ব্যবহারের জন্য প্রস্তুত। যদি না হয়, তাহলে এই টিউটোরিয়ালের শুরুতে ফিরে যান এবং ট্রায়াল বিলিং অ্যাকাউন্টটি রিডিম করুন।

7f607aa026552bf5.png সম্পর্কে

ধাপ ২: ক্লাউড শেলের সাথে পরিচিত হোন

আপনি বেশিরভাগ টিউটোরিয়ালের জন্য ক্লাউড শেল ব্যবহার করবেন, গুগল ক্লাউড কনসোলের উপরে অ্যাক্টিভেট ক্লাউড শেল ক্লিক করুন। যদি এটি আপনাকে অনুমোদনের জন্য অনুরোধ করে, তাহলে অনুমোদনে ক্লিক করুন।

1829c3759227c19b.png সম্পর্কে

b8fe7df5c3c2b919.png সম্পর্কে

ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আমাদের পরীক্ষা করতে হবে যে শেল (অথবা টার্মিনাল) ইতিমধ্যেই আমাদের অ্যাকাউন্টের সাথে প্রমাণীকরণ করা হয়েছে কিনা।

gcloud auth list

যদি আপনি নীচের উদাহরণের মতো আপনার ব্যক্তিগত জিমেইল আউটপুট দেখতে পান, তাহলে সবকিছু ঠিক আছে।

Credentialed Accounts

ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

যদি না হয়, তাহলে আপনার ব্রাউজার রিফ্রেশ করার চেষ্টা করুন এবং অনুরোধ করা হলে Authorize- এ ক্লিক করুন (সংযোগ সমস্যার কারণে এটি ব্যাহত হতে পারে)

এরপর, আমাদের এটাও পরীক্ষা করতে হবে যে শেলটি ইতিমধ্যেই আপনার কাছে থাকা সঠিক PROJECT ID- তে কনফিগার করা আছে কিনা। যদি আপনি দেখেন যে টার্মিনালে $ আইকনের আগে () এর ভিতরে একটি মান আছে (নীচের স্ক্রিনশটে, মানটি "your-workshop-project" ) তাহলে এই মানটি আপনার সক্রিয় শেল সেশনের জন্য কনফিগার করা প্রকল্পটি দেখায়।

25e65d7ad1d62de0.png সম্পর্কে

যদি দেখানো মানটি ইতিমধ্যেই সঠিক থাকে, তাহলে আপনি পরবর্তী কমান্ডটি এড়িয়ে যেতে পারেন। তবে যদি এটি সঠিক না হয় বা অনুপস্থিত থাকে, তাহলে নিম্নলিখিত কমান্ডটি চালান।

gcloud config set project <YOUR_PROJECT_ID>

ধাপ ৩: ক্লাউড শেল এডিটরের সাথে পরিচিত হোন এবং অ্যাপ্লিকেশন ওয়ার্কিং ডিরেক্টরি সেটআপ করুন

এখন, আমরা কিছু কোডিং কাজ করার জন্য আমাদের কোড এডিটর সেট আপ করতে পারি। এর জন্য আমরা ক্লাউড শেল এডিটর ব্যবহার করব।

ওপেন এডিটর বোতামে ক্লিক করুন, এটি একটি ক্লাউড শেল এডিটর খুলবে। b16d56e4979ec951.png সম্পর্কে

এখন আপনি নিচের চিত্রের মতো ক্লাউড শেল এডিটর ইন্টারফেস দেখতে পাবেন।

74e9e030342164b6.png সম্পর্কে

এখন, আমরা যে ডেমো রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করব সেটি ক্লোন করুন। প্রথমে, আমাদের এডিটরের জন্য টার্মিনাল খুলতে হবে। আপনি মেনু বারে Terminal -> New Terminal এ ক্লিক করে এটি করতে পারেন, অথবা Ctrl + Shift + C ব্যবহার করুন, এটি ব্রাউজারের নীচের অংশে একটি টার্মিনাল উইন্ডো খুলবে।

95e31ec63a88890d.png সম্পর্কে

তারপর টার্মিনালে এই কমান্ডটি চালান

git clone https://github.com/alphinside/gemini-cli-code-analysis-demo.git code-analysis-demo

এরপর, ক্লাউড শেল এডিটরের উপরের অংশে যান এবং File->Open Folder এ ক্লিক করুন, আপনার ব্যবহারকারীর নাম ডিরেক্টরিটি খুঁজুন এবং ক্লোন করা রিপোজিটরি ডিরেক্টরিটি code-analysis-demo খুঁজে বের করুন তারপর OK বোতামে ক্লিক করুন। এটি নির্বাচিত ডিরেক্টরিটিকে প্রধান কার্যকরী ডিরেক্টরি হিসাবে পরিণত করবে। এই উদাহরণে, ব্যবহারকারীর নাম হল alvinprayuda , তাই ডিরেক্টরি পাথটি নীচে দেখানো হয়েছে।

অনুসরণ

194f63ef6de51b9.png সম্পর্কে

এখন, আপনার ক্লাউড শেল এডিটর ওয়ার্কিং ডিরেক্টরিটি এইরকম দেখাবে

2d53c6161b553e68.png সম্পর্কে

এখন আমরা পরবর্তী ধাপে যেতে পারি।

৩. 🚀 সেটআপ এবং কনফিগারেশন

আপনি যদি আপনার স্থানীয় সিস্টেমে জেমিনি সিএলআই ইনস্টল করতে চান, তাহলে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন:

  1. আপনার সিস্টেমে নোড সংস্করণ ২০+ আছে কিনা তা নিশ্চিত করুন।
  2. জেমিনি সিএলআই সক্রিয় করুন:
  • এটি একটি বিশ্বব্যাপী প্যাকেজ হিসেবে ইনস্টল করা হচ্ছে
# Install as an executor

npm install -g @google/gemini-cli

# then run it from terminal
gemini
  • অথবা সর্বদা সর্বশেষ সংস্করণ পেতে সরাসরি উৎস থেকে এটি চালান
npx https://github.com/google-gemini/gemini-cli

যখন আপনি এটি প্রথমবার চালাবেন, এটি আপনাকে বেশ কয়েকটি প্রশ্ন জিজ্ঞাসা করবে। যদি আপনি এটি একটি IDE (যেমন VSCode) থেকে চালান তবে এটি আপনাকে নিম্নলিখিত প্রশ্ন জিজ্ঞাসা করবে।

অনুসরণ

তারপর, এটি আপনাকে প্রমাণীকরণের জন্য বেশ কয়েকটি বিকল্প জিজ্ঞাসা করবে

7ce5c6574f249304.png সম্পর্কে

বেশ কয়েকটি বিকল্প আছে:

  • যদি আপনি "Google দিয়ে লগইন করুন" নির্বাচন করেন, তাহলে ব্রাউজারে একটি Google প্রমাণীকরণ পৃষ্ঠা খুলবে এবং আপনাকে কেবল এটি গ্রহণ করতে হবে।
  • যদি আপনি Gemini API Key ব্যবহার করতে পছন্দ করেন, তাহলে আপনাকে AI Studio পৃষ্ঠায় একটি তৈরি করতে হবে এবং তারপর আপনার ওয়ার্কিং ডিরেক্টরিতে GEMINI_API_KEY ভেরিয়েবল সেট সহ .env ফাইল তৈরি করতে হবে (অথবা কমান্ড লাইনে export GEMINI_API_KEY="your-api-key" কমান্ডটি চালান)।
  • যদি আপনি Vertex AI ব্যবহার করতে চান, তাহলে আপনার আগের মতো একটি প্রকল্প সেটআপ করতে হবে এবং .env ফাইল তৈরি করতে হবে এবং GOOGLE_CLOUD_PROJECT এবং GOOGLE_CLOUD_LOCATION সেট করতে হবে।

যদি আপনি এই প্রমাণীকরণ পদ্ধতিগুলি পরিবর্তন করতে চান, তাহলে আপনি Gemini CLI থেকে /auth কমান্ডটি চালাতে পারেন অথবা কনফিগারেশন ফাইলটি সম্পাদনা করতে পারেন। যদি আপনি সরাসরি কনফিগারেশন ফাইলটি সম্পাদনা করতে চান, তাহলে লিনাক্সে এটি $HOME/.gemini/settings.json এ থাকা উচিত। আপনি security এবং auth টাইপ দেখতে পাবেন এবং এটি সম্পাদনা করতে পারবেন।

{
  "security": {
    "auth": {
      "selectedType": "vertex-ai" # or "gemini-api-key" or "oauth-personal"
    }
  }
}

72300c1f781857c8.png সম্পর্কে

৪. 🚀 বেসিক কমান্ড এবং বিল্ট ইন টুলস

এবার, জেমিনি সিএলআই সম্পর্কে আরও জানতে, আসুন। যদি আপনি এমন কোনও মৌলিক কমান্ড খুঁজছেন যা ব্যবহার করা যেতে পারে, তাহলে আপনি সমস্ত উপলব্ধ কমান্ড প্রদর্শনের জন্য /help টাইপ করতে পারেন।

800d1b06a5ad9f9c.png সম্পর্কে

/help

তুমি এইরকম আউটপুট দেখতে পাবে f46a75c6bb177a2b.png

জেমিনি সিএলআই একটি এআই এজেন্ট, তাই ব্যবহারকারীর প্রদত্ত কাজ সমাধানের জন্য এতে সরঞ্জাম সজ্জিত থাকবে। এতে থাকা বিল্ট-ইন সরঞ্জামগুলি দেখতে, /tools কমান্ডটি চালান।

17a6d7fcf06df563.png সম্পর্কে

/tools

এটি আপনাকে এইভাবে আউটপুট দেখাবে

7d22b38a387f45d0.png সম্পর্কে

আপনি দেখতে পাচ্ছেন যে জেমিনি সিএলআই-এর বেশ কিছু ক্ষমতা রয়েছে যেমন ফাইলে পড়ুন এবং লিখুন, ওয়েব অনুসন্ধান এবং আরও অনেক কিছু। সম্ভাব্য ঝুঁকির কারণে এই সরঞ্জামগুলির মধ্যে বেশ কয়েকটির জন্য ডিফল্টভাবে ব্যবহারকারীর স্বীকৃতি প্রয়োজন।

এবার দেখা যাক এটি কীভাবে কাজ করে, জেমিনি সিএলআই-তে এই প্রম্পটগুলি চালানোর চেষ্টা করুন।

15e2d863a4eb8df4.png সম্পর্কে

Find top 10 OWASP security issue and write it down to owasp.md

আপনি দেখতে পাবেন যে এটি GoogleSearch টুলটি ব্যবহার করবে এবং পরে WriteFile ব্যবহার করে ফলাফল লিখবে। এবং যদি আপনি IDE ব্যবহার করেন, তাহলে আপনি দেখতে পাবেন যে এটি একটি diff এবং display বিকল্প হিসাবে উপস্থাপিত হবে, আপনি পরামর্শ গ্রহণ বা প্রত্যাখ্যান করতে চান কিনা। এখানে, আপনি দেখতে পাবেন যে Gemini CLI আপনার কাছে ফাইলটি লেখার অনুমতি চাইছে।

8163f43b05ca59a3.png সম্পর্কে

৫. 🚀 এক্সটেনশন

একজন এআই এজেন্টের সাহায্যে একটি নির্দিষ্ট কাজের আউটপুট উন্নত করার জন্য, চ্যালেঞ্জিং বিষয়গুলি হল কীভাবে আমরা একটি সঠিক প্রম্পট তৈরি করতে পারি, সঠিক সরঞ্জাম ইন্টিগ্রেশনের মাধ্যমে একটি সঠিক প্রেক্ষাপট প্রকৌশল পরিচালনা করতে পারি ইত্যাদি।

জেমিনি সিএলআই এক্সটেনশন হল একটি প্রি-প্যাকেজড এবং সহজেই ইনস্টলযোগ্য প্রম্পট এবং ইন্টিগ্রেশন যা বহিরাগত সরঞ্জামগুলির সাথে সংযোগ স্থাপন করতে পারে। প্রতিটি এক্সটেনশনে সরঞ্জামগুলি কার্যকরভাবে কীভাবে ব্যবহার করতে হয় তার জন্য একটি অন্তর্নির্মিত "প্লেবুক" থাকে এবং এই উপাদানগুলি দিয়ে তৈরি করা যেতে পারে:

  • কাস্টম স্ল্যাশ কমান্ড
  • এমসিপি কনফিগারেশন
  • প্রসঙ্গ ফাইল

6da12f33463ac755.png সম্পর্কে

নিরাপত্তা এক্সটেনশন ইনস্টল করা হচ্ছে

উদাহরণস্বরূপ, এই টিউটোরিয়ালে আমরা দেখব কিভাবে code-review এবং security এক্সটেনশন ইনস্টল করা যেতে পারে।

টার্মিনাল থেকে security এক্সটেনশন ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান

gemini extensions install https://github.com/gemini-cli-extensions/security

এটি নিম্নলিখিত প্রশ্নগুলি দেখাবে, গ্রহণ করতে কেবল এন্টার টিপুন

Installing extension "gemini-cli-security".
**Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.**
This extension will run the following MCP servers:
  * securityServer (local): node /home/alvinprayuda/.gemini/extensions/gemini-cli-security/mcp-server/dist/security.js
This extension will append info to your gemini.md context using GEMINI.md
Do you want to continue? [Y/n]:
Extension "gemini-cli-security" installed successfully and enabled.

কোড পর্যালোচনা এক্সটেনশন ইনস্টল করা হচ্ছে

এবং এরপর, code-review এক্সটেনশনটি ইনস্টল করা যাক, নীচের কমান্ডটি চালান।

gemini extensions install https://github.com/gemini-cli-extensions/code-review

শেষ হওয়ার পর, আবার জেমিনি সিএলআই চালান।

gemini

এবং /extensions কমান্ড চালান, আপনি দেখতে পাবেন যে এই দুটি এক্সটেনশন ইতিমধ্যেই ইনস্টল করা আছে।

88a86a0dc42fc510.png সম্পর্কে

/extensions

ঠিক আছে, এখন আপনার পূর্বে ক্লোন করা নমুনা রেপোর একটি ব্যবহারিক বাস্তবায়ন করা যাক।

৬. 🚀 ইন্টারেক্টিভ মোড - কোড সিকিউরিটি অ্যানালাইসিস এক্সটেনশন অ্যাপ্লিকেশন

সিকিউরিটি এক্সটেনশনটি একটি ওপেন-সোর্স জেমিনি সিএলআই এক্সটেনশন, যা রিপোজিটরির নিরাপত্তা বাড়ানোর জন্য তৈরি করা হয়েছে। এক্সটেনশনটি জেমিনি সিএলআইতে একটি নতুন কমান্ড যুক্ত করে যা বিভিন্ন ধরণের সুরক্ষা ঝুঁকি এবং দুর্বলতা সনাক্ত করতে কোড পরিবর্তন বিশ্লেষণ করে।

এবার প্রথমে আমাদের ডেমো রিপোজিটরি প্রস্তুত করা যাক, নিম্নলিখিত কমান্ডটি চালান এবং সেই শাখায় যান যেখানে নিরাপত্তা ঝুঁকি সহ পরিবর্তনগুলি ইতিমধ্যেই প্রয়োগ করা হয়েছে।

git checkout refactor/analysis-demo

এরপর টার্মিনালে জেমিনি সিএলআই চালান।

gemini

তাহলে এক্সটেনশনগুলো রান করা যাক।

e3fcf630238f9b2e.png সম্পর্কে

/security:analyze

এটি একটি দীর্ঘ চলমান প্রক্রিয়া শুরু করবে এবং প্রক্রিয়া চলাকালীন আপনি বেশ কয়েকটি বাধা পাবেন যা নীচে দেখানো mkdir মতো নির্দিষ্ট অপারেশন চালানোর জন্য আপনার অনুমতি চাইবে।

10d6ad2ef91b5acf.png সম্পর্কে

এটি একটি প্রতিরক্ষামূলক ব্যবস্থা যা নিশ্চিত করে যে ব্যবহারকারীরা জেমিনি সিএলআই দ্বারা কী কার্যকর করা হবে সে সম্পর্কে সচেতন। টিউটোরিয়ালের বাকি অংশের জন্য, আপনি সর্বদা এটির অনুমতি দিতে পারেন (বিকল্প 2)।

এই এক্সটেনশনটি একটি দীর্ঘ প্রক্রিয়া শুরু করবে, আপনি এটি .gemini_security ডিরেক্টরির ভিতরে একটি পরিকল্পনা ফাইল তৈরি করতে দেখতে পাবেন এবং আপনি কোন প্রক্রিয়াটি সম্পন্ন হয়েছে কিনা তা চেকলিস্ট দেখতে পাবেন। নীচের এই উদাহরণে যেমন দেখানো হয়েছে:

543035cb65d27804.png সম্পর্কে

এর কাজগুলি শেষ করতে কিছুটা সময় লাগবে, অপেক্ষা করার সময়, আমরা Github রিপোজিটরিতে এই এক্সটেনশনগুলির উৎস পরীক্ষা করতে পারি। এই URL টি এই সমস্ত সুরক্ষা স্ক্যানিং প্রক্রিয়া চালানোর জন্য ব্যবহৃত প্রম্পটটি দেখায়।

73f4966870bc9ddf.png সম্পর্কে

আপনি সেখানে দেখতে পাচ্ছেন, এটি স্ক্যান করার জন্য, দুটি পাস চেকিং করার জন্য জেমিনি সিএলআই হিসাবে প্রম্পটটি, রিকনেসান্স পাস এবং আরও বিস্তারিত তদন্ত পাস।

যদি আপনি জেমিনি সিএলআই-তে নিম্নলিখিত প্রম্পটের সম্মুখীন হন, তাহলে লুপ সনাক্তকরণ নিষ্ক্রিয় করার জন্য আপনি বিকল্প 2 বেছে নিতে পারেন।

a0af5e15627afa83.png সম্পর্কে

তারপর জেমিনি সিএলআই-কে চালিয়ে যেতে বলুন।

611a7ed0fb6fc44b.png সম্পর্কে

continue

এটি অসীম অ-উৎপাদনশীল টুল কলিং লুপ এড়াতে একটি প্রক্রিয়া এবং সময়ের সাথে সাথে এটি উন্নত হতে থাকবে।

কাজ শেষ হওয়ার পর, এটি ইন্টারেক্টিভ টার্মিনালে রিপোর্টটি দেখাবে, এটি সহজ করার জন্য আসুন জেমিনি সিএলআইকে এটিকে security-analysis.md এ লেখার নির্দেশ দেই।

b4cbad3aaeaa8dce.png

write the result to security-analysis.md file

এখন আপনি ফাইলে লেখা ফলাফলটি পরীক্ষা করতে পারেন।

৭. 🚀 নন-ইন্টারেক্টিভ মোড - কোড রিভিউ এক্সটেনশন অ্যাপ্লিকেশন

code-review এক্সটেনশনটি জেমিনি সিএলআই-তে একটি নতুন কমান্ড যুক্ত করেছে যা কোডের মানের বিভিন্ন সমস্যা সনাক্ত করতে কোড পরিবর্তন বিশ্লেষণ করে।

এই এক্সটেনশনটি জেমিনি সিএলআই নন-ইন্টারেক্টিভ মোডে কার্যকর করা যেতে পারে, যার অর্থ হল জেমিনি সিএলআই শেল প্রবেশ না করেই সমস্ত প্রক্রিয়া কার্যকর করা যেতে পারে। নন-ইন্টারেক্টিভ মোডে জেমিনি সিএলআই চালানোর জন্য আপনি নিম্নলিখিত কমান্ড প্যাটার্ন ব্যবহার করে এটি করতে পারেন।

gemini "put your command here"

তবে, এটা মনে রাখা গুরুত্বপূর্ণ যে, নন-ইন্টারেক্টিভ মোডে চালানোর ফলে ব্যবহারকারীর অনুমতির প্রয়োজন এমন যেকোনো টুল অপারেশন অক্ষম হয়ে যাবে, তাই আমাদের --yolo ফ্ল্যাগ যোগ করতে হবে যাতে সমস্ত অ্যাকশন স্বয়ংক্রিয়ভাবে অনুমোদন করা যায় যার অর্থ নন-ইন্টারেক্টিভ মোড চলাকালীন সমস্ত টুল সক্রিয় করা হয়।

নিম্নলিখিত কমান্ড দিয়ে code-review এক্সটেনশনটি চালাই।

gemini "/code-review" --yolo -e code-review > code-review.md

এই কমান্ডটি জেমিনি CLI আউটপুটের ফলাফল code-review.md ফাইলে লিখবে। এখানে -e ফ্ল্যাগটি লক্ষ্য করুন, এই ফ্ল্যাগটি সেশন চলাকালীন কোন এক্সটেনশনটি সক্রিয় করতে হবে তা নিয়ন্ত্রণ করে। এখানে আমরা কেবল code-review এক্সটেনশনটি সক্রিয় করব এবং অন্যগুলি অক্ষম করব।

এতে কিছুটা সময় লাগবে, কিন্তু এটি শেষ হওয়ার পরে, আপনি মার্কডাউন ফাইলে লেখা নীচের চিত্রের মতো ফলাফল দেখতে পাবেন।

Here are the results of the code review.

While the recent changes to rename `get_products` and `get_product` to `GetProducts` and `GetProduct` are minor, the codebase has some inconsistencies in its naming conventions. For instance, other functions like `create_product` use `snake_case`, while the newly renamed functions use `PascalCase`. For better code quality and readability, I recommend using a consistent naming convention throughout the project.

More importantly, I have identified several security vulnerabilities in the `main.py` file. Here is a summary of the findings:

### 1. SQL Injection
*   **Severity**: High
*   **Location**: 
    *   `main.py:99` in `get_products_by_category`
    *   `main.py:146` in `search_products`
    *   `main.py:372` in `get_user_transactions`
    *   `main.py:438` in `adjust_inventory_by_query`
*   **Description**: The endpoints directly use f-strings to construct SQL queries, making them vulnerable to SQL injection attacks. An attacker could manipulate the input to execute arbitrary SQL commands, potentially leading to data breaches or unauthorized modifications.
*   **Recommendation**: Use parameterized queries or an ORM to handle database interactions. This will ensure that user input is properly sanitized and prevent SQL injection attacks.

### 2. Server-Side Request Forgery (SSRF)
*   **Severity**: High
*   **Location**: `main.py:265` in `fetch_url`
*   **Description**: The `fetch_url` endpoint allows users to specify an arbitrary URL, which the server then requests. This can be exploited to make requests to internal services or local files, leading to information disclosure or other security breaches.
*   **Recommendation**: Implement a whitelist of allowed domains or protocols to restrict the URLs that can be requested. Additionally, you can disable redirects and use a timeout to limit the impact of an attack.

### 3. Information Exposure
*   **Severity**: Medium
*   **Location**: `main.py:423` in `get_environment_variables`
*   **Description**: The `get_environment_variables` endpoint exposes all environment variables to the user. This can include sensitive information such as API keys, database credentials, and other secrets.
*   **Recommendation**: Remove this endpoint or restrict access to it to authorized users. If you need to expose some environment variables, do so selectively and avoid exposing sensitive information.

৮. 🚀 মডেল কনটেক্সট প্রোটোকল সাপোর্ট

এখন, যেমনটি আমরা আগে এক্সটেনশন ব্যাখ্যায় পরীক্ষা করেছি, জেমিনি সিএলআই এমসিপি সার্ভারের সাথে সংযোগ স্থাপন করতে পারে - এমন অ্যাপ্লিকেশন যা মডেল কনটেক্সট প্রোটোকলের মাধ্যমে সরঞ্জাম এবং সংস্থান সরবরাহ করে। এই সংযোগটি জেমিনি সিএলআইকে এমসিপি সার্ভারগুলিকে আপনার স্থানীয় পরিবেশ এবং এপিআই-এর মতো বাহ্যিক পরিষেবাগুলির সাথে সেতু হিসাবে ব্যবহার করে বাহ্যিক সিস্টেম এবং ডেটা উত্সগুলির সাথে ইন্টারঅ্যাক্ট করতে দেয়।

5f1cdd4be3e7b42a.png সম্পর্কে

আপনি যদি নিজের MCP সার্ভার সেটআপ করতে চান, তাহলে আপনাকে আপনার .gemini/settings.json ফাইলটি পরিবর্তন করতে হবে এবং নিম্নলিখিত কনফিগারেশনগুলি যুক্ত করতে হবে:

{
    ...
    # Previous settings above if any
    "mcpServers": {
       "server_name": {
           # MCP server configurations here
       }
    }
}

এই টিউটোরিয়ালের জন্য, আসুন আমরা আমাদের Github অ্যাকাউন্টের সাথে সংযোগ কনফিগার করি যাতে পূর্ববর্তী রিপোর্ট ডেটা Github-এ পুশ করা যায়।

গিথুব এমসিপি সার্ভার কনফিগার করা হচ্ছে

প্রথমে, আমাদের Gemini CLI প্রজেক্ট কনফিগারেশন ফাইল তৈরি করা যাক। নিম্নলিখিত কমান্ডটি চালান।

mkdir -p .gemini && touch .gemini/settings.json

তারপর .gemini/settings.json ফাইলটি খুলুন এবং নিম্নলিখিত কনফিগারেশনটি পূরণ করুন।

{
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "your-personal-access-token"
            },
            "timeout": 5000
       }
  }
}

এখন, আমাদের এখানে আপনার নিজস্ব Github ব্যক্তিগত অ্যাক্সেস টোকেন প্রয়োজন হবে, তাই নিশ্চিত করুন যে আপনার ইতিমধ্যেই নিজস্ব Github অ্যাকাউন্ট আছে।

আপনার Github-এ লগইন করুন এবং সেটিংসে যান।

dc57f047ca9a2b83.png সম্পর্কে

এরপর, Developer settings খুঁজে পেতে নিচে স্ক্রোল করুন এবং এটিতে ক্লিক করুন।

59d9b700c41ca1b6.png সম্পর্কে

তারপর ব্যক্তিগত অ্যাক্সেস টোকেন নির্বাচন করুন এবং টোকেন (ক্লাসিক) নির্বাচন করুন।

e96fccd80872e480.png সম্পর্কে

30ac727da307602b.png সম্পর্কে

এখানে আপনার ব্যক্তিগত অ্যাক্সেস টোকেনের নাম দিন এবং রেপো স্কোপগুলি পরীক্ষা করুন।

ad167223fa231e3c.png সম্পর্কে

তারপর নিচে স্ক্রোল করুন এবং জেনারেট টোকেন বোতামে ক্লিক করুন, নিশ্চিত করুন যে আপনি

"নতুন টোকেন তৈরি করুন" বোতামে ক্লিক করুন এবং "নতুন টোকেন তৈরি করুন" (ক্লাসিক) নির্বাচন করুন। এরপর তৈরি করা টোকেনটি কপি করুন এবং .gemini/settings.json এ লিখুন।

efd82711868093c0.png সম্পর্কে

তাহলে, আপনার .gemini/settings.json দেখতে নিচের উদাহরণের মতো হওয়া উচিত

{
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "ghp-xxxx"
            },
            "timeout": 5000
       }
  }
}

এবার, সংযোগটি যাচাই করা যাক। এই কমান্ডটি চালিয়ে জেমিনি CLI লিখুন।

gemini

তারপর, /mcp কমান্ডটি চালান, আপনি দেখতে পাবেন Github MCP ইতিমধ্যেই সঠিকভাবে কনফিগার করা হয়েছে।

a97c9a98f07dc87c.png সম্পর্কে

/mcp

তাহলে এই কমান্ডটি জমা দিয়ে এই MCP সংযোগটি পরীক্ষা করা যাক

59bfd79aba7cc386.png সম্পর্কে

Aggregate the findings from @code-review.md and @security-analysis.md into a single report and ensure no duplicates issues reported. Post this report as a comment on the relevant pull request for the current git branch on GitHub and display the pull request URL for manual review

এখানে @code-review.md এবং @security-analysis.md নোটেশনটি লক্ষ্য করুন, এইভাবে আমরা Gemini CLI-তে পাঠানোর জন্য ফাইলগুলিকে রেফারেন্স করি। এই কমান্ডটি উভয় ফাইলের বিষয়বস্তু পড়বে এবং Github MCP সংযোগ ব্যবহার করে এই শাখার সাথে সম্পর্কিত Pull Request-এ একটি মন্তব্য পুশ করবে। এর পরে আপনি এটি যাচাই করার জন্য pull request URL চেক করতে পারেন।

864b859b56cfe9e7.png সম্পর্কে

৯. 💡CI/CD ওয়ার্কফ্লোতে জেমিনি CLI

আপনি যদি একজন Github ব্যবহারকারী হন, তাহলে run-gemini-cli Github Action ব্যবহার করে আপনি সহজেই আপনার CI/CD পাইপলাইনে Gemini CLI এম্বেড করতে পারেন। এটি গুরুত্বপূর্ণ রুটিন কোডিং কাজের জন্য একটি স্বায়ত্তশাসিত এজেন্ট এবং একটি অন-ডিমান্ড সহযোগী হিসেবে কাজ করে যাকে আপনি দ্রুত কাজ অর্পণ করতে পারেন।

আপনি এটি ব্যবহার করে Github রিপোজিটরির ভিতরে সরাসরি Gethi ব্যবহার করে পুল রিকোয়েস্ট পর্যালোচনা, ট্রাইএজ সমস্যা, কোড বিশ্লেষণ এবং পরিবর্তন এবং আরও অনেক কিছু করতে পারেন।

এই ইন্টিগ্রেশনের উদাহরণটি এই পুল রিকোয়েস্টে পরীক্ষা করা যেতে পারে, যেখানে আমরা রানারের ভিতরে জেমিনি সিএলআই সিকিউরিটি এক্সটেনশন ব্যবহার করি এবং পুল রিকোয়েস্ট তৈরি হলে পর্যালোচনা দেই।

ad2a8e8d0a15e3f5.png সম্পর্কে

3cb40f104ce6a594.png সম্পর্কে

8edb7277fa6324b.png সম্পর্কে

অনুসরণ

১০. 💡অন্যান্য জেমিনি সিএলআই এক্সটেনশনগুলি অন্বেষণ করুন

8a7939ee0328e6e2.png সম্পর্কে

আপনি https://geminicli.com/extensions এ আরও এক্সটেনশন অন্বেষণ করতে পারেন। আরও আকর্ষণীয় সরঞ্জামের জন্য এটি পরীক্ষা করে দেখুন!

১১. 🧹 পরিষ্কার করা

এই কোডল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা পৃষ্ঠায় যান।
  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন।
  3. ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন, এবং তারপর প্রজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।