Tekunda Team

Tekunda Team

Salesforce Code Analyzer v5: انقل خط أنابيبك بعيدًا عن sfdx-scanner

Salesforce Code Analyzer v5: انقل خط أنابيبك بعيدًا عن sfdx-scanner

باختصار: Salesforce Code Analyzer v5 يحل محل إضافة sfdx-scanner. ثبّته بـsf plugins install code-analyzer، واستبدل sf scanner run بـsf code-analyzer run، واستبدل خياري --engine و--category القديمين بخيار واحد هو --rule-selector. وينتقل الـGraph Engine تحت الأمر نفسه، وينتقل ضبط المحركات من خيارات سطر الأوامر إلى ملف code-analyzer.yml.

إن كانت الـCI لديك ما زالت تنادي sf scanner run، فهذه الهجرة تُجدول قبل تقديمك التالي إلى AppExchange، لا بعده. بقية مراجعة الأمان لا تتغير، لذا يقتصر هذا الدليل على تبديل الأداة. ولمعرفة ما يرفضه المراجعون فعلًا وبأي ترتيب تصلحه، انظر Salesforce Security Review Checklist: What to Fix, In Order.

ما الذي تغيّر بين sfdx-scanner وCode Analyzer v5؟

المهمة نفسها، والباب جديد. Code Analyzer v5 إضافة لـsf توحّد محركات التحليل الساكن خلف أمر واحد وصيغة نتائج واحدة، بدل خيارات كل محرك على حدة في الإصدار الرابع. ثلاثة فروق تهم عند الهجرة:

  • سطح أوامر واحد. sf code-analyzer run يغطي المحركات التي كانت موزّعة بين sf scanner run وsf scanner run dfa، فلم يعد الـGraph Engine استدعاءً منفصلًا بخياراته الخاصة.
  • محدِّدات بدل خيارات المحرك والفئة. تطلب القواعد بالاسم أو الوسم أو المحرك أو الخطورة عبر --rule-selector، بدل الجمع بين --engine و--category.
  • الإعدادات في ملف. ضبط المحركات الذي كان يعيش في خيارات سطر الأوامر ومسارات إعداد لكل محرك صار مكانه ملف code-analyzer.yml ترفعه بجوار الكود الذي يحكمه.

كيف تثبّته وتشغّله؟

ثبّت الإضافة ثم شغّلها على مساحة عملك:

sf plugins install code-analyzer
sf code-analyzer run --workspace . --view detail

ولّد إعدادًا مبدئيًا مرة واحدة وارفعه، كي يحلل كل مطوّر وكل مهمة CI بالقواعد نفسها:

sf code-analyzer config --output-file code-analyzer.yml

ولا تثق بمحدِّد قبل أن تسرد ما ينتج عنه. هذه أسرع طريقة لالتقاط هجرة ضيّقت تغطيتك بصمت:

sf code-analyzer rules --rule-selector Security

كيف تترجم أوامرك الحالية؟

راجع تعريفات خط الأنابيب وسكربتاتك المحلية في مرور واحد:

  • sf scanner run --target force-app يصبح sf code-analyzer run --workspace force-app.
  • --engine pmd --category Security يصبح --rule-selector pmd:Security، أو --rule-selector Security فقط إذا أردت ذلك الوسم عبر كل المحركات.
  • sf scanner run dfa يصبح محدِّدًا على الـGraph Engine داخل التشغيل العادي، بدل أمر فرعي مستقل.
  • --format مع --outfile يصبحان --output-file، وامتداد الملف هو ما يحدد الصيغة. استخدم --output-file results.sarif إذا كنت ترفع النتائج إلى واجهة فحص الكود لدى مزوّدك.
  • خيارات الإعداد لكل محرك تصبح مدخلات في code-analyzer.yml. انقلها بدل إعادة بنائها كخيارات.

ولا تنقل قائمة الاستثناءات يدويًا باسم القاعدة. معرّفات القواعد انتقلت مع المحركات، فأعد اشتقاق استثناءاتك من قائمة sf code-analyzer rules جديدة، واحذف ما لم يعد له مقابل.

كيف تجعل منه بوابة في الـCI؟

عبر --severity-threshold. يخرج الأمر بقيمة غير صفرية حين يجد مخالفة عند المستوى الذي تمرره أو فوقه، وهذا ما يحوّل الفحص من تقرير إلى بوابة:

sf code-analyzer run --workspace . \
  --rule-selector Security \
  --severity-threshold 3 \
  --output-file results.sarif

اضبط العتبة عند حال قاعدة الكود اليوم، لا عند ما تتمناه، ثم شدّها بعد تصفية المتراكم. البوابة التي تُفشل كل pull request من اليوم الأول تُعطَّل خلال أسبوع، والبوابة المعطّلة لا تلتقط شيئًا.

ما الذي لا تغيّره هذه الهجرة؟

يغطي Code Analyzer الكود داخل الحزمة. أما بقية أدلة التقديم فلا يمسّها تبديل الإصدار:

تهاجر خط أنابيب لم تبنِه أنت، وتحت ضغط موعد نهائي؟ Tekunda تبني وتحزّم منتجات AppExchange بصفتها Salesforce PDO، بما في ذلك مراجعة الأمان.

الأسئلة الشائعة

هل ما زال sfdx-scanner مدعومًا؟

عامله كجيل سابق. Code Analyzer v5 هو الخلف، وفيه تهبط القواعد الجديدة وتحديثات المحركات، فخط الأنابيب الباقي على الإضافة القديمة يتخلّف في التغطية بصمت.

هل تتغير نتائجي بعد الهجرة؟

توقّع ذلك. المحدِّدات تنتج مجموعة قواعد مختلفة عن تركيبتك القديمة من المحرك والفئة، ودرجات الخطورة موحّدة عبر المحركات. شغّل الإصدارين مرة واحدة جنبًا إلى جنب، وقارن النتائج قبل حذف المهمة القديمة.

أين أضع إعدادات المحركات الآن؟

في code-analyzer.yml المرفوع إلى الريبو. ولّد ملفًا مبدئيًا بـsf code-analyzer config وعدّل انطلاقًا منه بدل كتابته من الصفر.

هل أستطيع تشغيله دون Salesforce CLI كاملة؟

إنه إضافة لـsf، فالـCLI شرط مسبق. ثبّت الـCLI والإضافة داخل صورة البناء بدل كل تشغيل، وإلا التهم التثبيت زمن المهمة.

مقالات ذات صلة