Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
spring-cloud__spring-cloud-config_CVE-2020-5410_2-1-8-RELEASE | Kitploit
أدوات/GitHubGitHub/shoucheng3/spring-cloud__spring-cloud-config_cve-2020-5410_2-1-8-release
المصادقة والترخيصأدوات التشفير/فك التشفيرتدقيق التكوينأمن السحابةDevSecOpsأمن واجهات برمجة التطبيقات
GitHubshoucheng3/spring-cloud__spring-cloud-config_cve-2020-5410_2-1-8-release

spring-cloud__spring-cloud-config_CVE-2020-5410_2-1-8-RELEASE

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
منذ سنة واحدةلم تتم المراجعة بعد

//// لا تقم بتحرير هذا الملف. لقد تم إنشاؤه تلقائيًا. سيتم فقدان التغييرات اليدوية على هذا الملف عند إنشائه مرة أخرى. قم بتحرير الملفات في دليل src/main/asciidoc/ بدلاً من ذلك. ////

image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]

يوفر Spring Cloud Config دعمًا من جانب الخادم ومن جانب العميل للتكوين الخارجي في نظام موزّع. باستخدام Config Server، يكون لديك مكان مركزي لإدارة الخصائص الخارجية للتطبيقات عبر جميع البيئات. تتطابق المفاهيم على كل من العميل والخادم تمامًا مع تجريدات Spring Environment وPropertySource، لذا فهي تناسب تطبيقات Spring بشكل كبير، ولكن يمكن استخدامها مع أي تطبيق يعمل بأي لغة. عندما ينتقل تطبيق عبر خط أنابيب النشر من بيئة التطوير إلى الاختبار ثم إلى الإنتاج، يمكنك إدارة التكوين بين تلك البيئات والتأكد من أن التطبيقات لديها كل ما تحتاجه للتشغيل عند انتقالها. يستخدم التنفيذ الافتراضي لخلفية تخزين الخادم git، لذا فهو يدعم بسهولة الإصدارات الموسومة لبيئات التكوين، كما أنه قابل للوصول من مجموعة واسعة من الأدوات لإدارة المحتوى. من السهل إضافة تنفيذات بديلة وربطها باستخدام تكوين Spring.

== الميزات

=== خادم Spring Cloud Config

يقدم خادم Spring Cloud Config المزايا التالية:

  • واجهة برمجة تطبيقات (API) قائمة على موارد HTTP للتكوين الخارجي (أزواج اسم-قيمة أو محتوى YAML مكافئ)
  • تشفير وفك تشفير قيم الخصائص (بشكل متماثل أو غير متماثل)
  • قابلة للتضمين بسهولة في تطبيق Spring Boot باستخدام @EnableConfigServer

=== عميل Spring Cloud Config

بشكل خاص لتطبيقات Spring، يتيح لك عميل Spring Cloud Config ما يلي:

  • الارتباط بخادم Config وتهيئة Spring Environment مع مصادر خصائص بعيدة.
  • تشفير وفك تشفير قيم الخصائص (بشكل متماثل أو غير متماثل).
  • @RefreshScope لوحدات Spring @Beans التي ترغب في إعادة تهيئتها عند تغيّر التكوين.
  • استخدام نقاط نهاية الإدارة: ** /env لتحديث Environment وإعادة ربط @ConfigurationProperties ومستويات السجل. ** /refresh لتحديث وحدات @RefreshScope. ** /restart لإعادة تشغيل سياق Spring (معطّل افتراضيًا). ** /pause و/resume لاستدعاء طرق Lifecycle (stop() وstart() على ).

== البدء السريع

يستعرض هذا الدليل السريع استخدام كل من الخادم والعميل الخاصين بـ Spring Cloud Config Server.

أولًا، ابدأ الخادم كما يلي:


$ cd spring-cloud-config-server $ ../mvnw spring-boot:run

الخادم هو تطبيق Spring Boot، لذا يمكنك تشغيله من بيئة التطوير المتكاملة (IDE) الخاصة بك إذا كنت تفضل ذلك (الفئة الرئيسية هي ConfigServerApplication).

بعد ذلك، جرّب عميلًا كما يلي:


$ curl localhost:8888/foo/development {"name":"foo","label":"master","propertySources":[ {"name":"https://github.com/scratches/config-repo/foo-development.properties","source":{"bar":"spam"}}, {"name":"https://github.com/scratches/config-repo/foo.properties","source":{"foo":"bar"}} ]}

الاستراتيجية الافتراضية لتحديد مصادر الخصائص هي استنساخ مستودع git (على spring.cloud.config.server.git.uri) واستخدامه لتهيئة SpringApplication مصغّرة. يُستخدم Environment الخاص بالتطبيق المصغّر لتعداد مصادر الخصائص ونشرها في نقطة نهاية JSON.

توفر خدمة HTTP موارد بالصيغة التالية:


/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties

حيث يتم حقن application كـ spring.config.name في SpringApplication (وهو ما يُعرف عادةً باسم application في تطبيق Spring Boot عادي)، وprofile هو ملف تعريف نشط (أو قائمة خصائص مفصولة بفواصل)، وlabel هو تسمية git اختيارية (القيمة الافتراضية هي master).

يسحب Spring Cloud Config Server التكوين للعملاء البعيدين من مصادر مختلفة. المثال التالي يحصل على التكوين من مستودع git (يجب توفيره)، كما هو موضح في المثال التالي:

[source,yaml]

spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo

المصادر الأخرى هي أي قاعدة بيانات متوافقة مع JDBC، وSubversion، وHashicorp Vault، وCredhub، وأنظمة الملفات المحلية.

=== الاستخدام من جانب العميل

لاستخدام هذه الميزات في تطبيق، يمكنك بناؤه كتطبيق Spring Boot يعتمد على spring-cloud-config-client (على سبيل المثال، راجع حالات الاختبار الخاصة بـ config-client أو التطبيق النموذجي). الطريقة الأكثر ملاءمة لإضافة التبعية هي باستخدام Spring Boot starter وهو org.springframework.cloud:spring-cloud-starter-config. يوجد أيضًا pom رئيسي وBOM (spring-cloud-starter-parent) لمستخدمي Maven وملف خصائص لإدارة إصدارات Spring IO لمستخدمي Gradle وSpring CLI. يوضح المثال التالي تكوين Maven نموذجيًا:

[source,xml,indent=0] .pom.xml

root@kitploit:~
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>{spring-boot-docs-version}</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>{spring-cloud-version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<build>
	<plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
	</plugins>
</build>

<!-- repositories also needed for snapshots and milestones -->

يمكنك الآن إنشاء تطبيق Spring Boot قياسي، مثل خادم HTTP التالي:


@SpringBootApplication @RestController public class Application {

root@kitploit:~
@RequestMapping("/")
public String home() {
    return "Hello World!";
}

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

}

عند تشغيل خادم HTTP هذا، يلتقط التكوين الخارجي من خادم التكوين المحلي الافتراضي (إذا كان قيد التشغيل) على المنفذ 8888. لتعديل سلوك بدء التشغيل، يمكنك تغيير موقع خادم التكوين باستخدام bootstrap.properties (مشابه لـ application.properties ولكن لمرحلة bootstrap في سياق التطبيق)، كما هو موضح في المثال التالي:


spring.cloud.config.uri: http://myconfigserver.com

افتراضيًا، إذا لم يتم تعيين اسم تطبيق، سيتم استخدام application. لتعديل الاسم، يمكن إضافة الخاصية التالية إلى ملف bootstrap.properties:


spring.application.name: myapp

NOTE: عند تعيين الخاصية ${spring.application.name} لا تسبق اسم تطبيقك بالكلمة المحجوزة application- لمنع حدوث مشكلات في حل مصدر الخصائص الصحيح.

تظهر خصائص bootstrap في نقطة نهاية /env كمصدر خصائص عالي الأولوية، كما هو موضح في المثال التالي.


$ curl localhost:8080/env { "profiles":[], "configService:https://github.com/spring-cloud-samples/config-repo/bar.properties":{"foo":"bar"}, "servletContextInitParams":{}, "systemProperties":{...}, ... }

مصدر خصائص يُسمى ```configService:<URL المستودع البعيد>/<اسم الملف>يحتوي على خاصيةfooبقيمةbar` وهو الأعلى أولوية.

NOTE: عنوان URL في اسم مصدر الخصائص هو مستودع git، وليس عنوان URL لخادم التكوين.

=== تطبيق نموذجي

يمكنك العثور على تطبيق نموذجي https://github.com/spring-cloud/spring-cloud-config/tree/master/spring-cloud-config-sample[هنا]. إنه تطبيق Spring Boot، لذا يمكنك تشغيله باستخدام الآليات المعتادة (على سبيل المثال، mvn spring-boot:run). عند تشغيله، يبحث عن خادم التكوين على http://localhost:8888 (قيمة افتراضية قابلة للتكوين)، لذا يمكنك تشغيل الخادم أيضًا لرؤية كل شيء يعمل معًا.

يحتوي النموذج على حالة اختبار حيث يتم أيضًا تشغيل خادم التكوين في نفس JVM (بمنفذ مختلف)، ويؤكد الاختبار أن خاصية بيئة من مستودع تكوين git موجودة. لتغيير موقع خادم التكوين، يمكنك تعيين spring.cloud.config.uri في bootstrap.yml (أو في خصائص النظام وأماكن أخرى).

تحتوي حالة الاختبار على طريقة main() تشغّل الخادم بنفس الطريقة (راقب السجلات لمعرفة منفذها)، لذا يمكنك تشغيل النظام بأكمله في عملية واحدة والتلاعب به (على سبيل المثال، يمكنك تشغيل طريقة main() في بيئة التطوير المتكاملة الخاصة بك). تستخدم طريقة main() الدليل target/config كدليل عمل لمستودع git، لذا يمكنك إجراء تغييرات محلية هناك ورؤيتها تنعكس في التطبيق قيد التشغيل. يوضح المثال التالي جلسة من العبث بحالة الاختبار:


$ curl localhost:8080/env/sample mytest $ vi target/config/mytest.properties .. change value of "sample", optionally commit $ curl localhost:8080/refresh ["sample"] $ curl localhost:8080/env/sample sampleValue

تشير نقطة نهاية التحديث إلى أن خاصية "sample" قد تغيرت.

== البناء

:jdkversion: 1.7

=== الترجمة والاختبار الأساسيان

لبناء المصدر، ستحتاج إلى تثبيت JDK {jdkversion}.

يستخدم Spring Cloud أداة Maven لمعظم الأنشطة المتعلقة بالبناء، ويجب أن تكون قادرًا على البدء بسرعة كبيرة عن طريق استنساخ المشروع الذي تهتم به وكتابة


$ ./mvnw install

NOTE: يمكنك أيضًا تثبيت Maven (>=3.3.3) بنفسك وتشغيل الأمر mvn بدلاً من ./mvnw في الأمثلة أدناه. إذا قمت بذلك، فقد تحتاج أيضًا إلى إضافة -P spring إذا كانت إعدادات Maven المحلية لديك لا تحتوي على تعريفات مستودع لقطع spring الأولية (pre-release).

NOTE: انتبه إلى أنك قد تحتاج إلى زيادة مقدار الذاكرة المتاحة لـ Maven عن طريق تعيين متغير بيئة MAVEN_OPTS بقيمة مثل -Xmx512m -XX:MaxPermSize=128m. نحاول تغطية ذلك في تكوين .mvn، لذا إذا وجدت أنه يتعين عليك القيام بذلك لإنجاح البناء، فيرجى رفع تذكرة لإضافة الإعدادات إلى التحكم في المصدر (source control).

للحصول على تلميحات حول كيفية بناء المشروع، انظر في .travis.yml إذا كان موجودًا. يجب أن يكون هناك أمر "script" وربما أمر "install". انظر أيضًا إلى قسم "services" لمعرفة ما إذا كانت هناك أي خدمات تحتاج إلى التشغيل محليًا (مثل mongo أو rabbit). تجاهل الأجزاء المتعلقة بـ git التي قد تجدها في "before_install" لأنها متعلقة بإعداد بيانات اعتماد git ولديك بالفعل.

المشاريع التي تتطلب middleware تتضمن عمومًا ملف docker-compose.yml، لذا فكّر في استخدام https://docs.docker.com/compose/[Docker Compose] لتشغيل خوادم middleware في حاويات Docker. راجع ملف README في https://github.com/spring-cloud-samples/scripts[مستودع scripts التجريبي] للحصول على تعليمات محددة حول الحالات الشائعة لـ mongo وrabbit وredis.

NOTE: إذا فشل كل شيء آخر، قم بالبناء باستخدام الأمر من .travis.yml (عادةً ./mvnw install).

=== التوثيق

تحتوي وحدة spring-cloud-build على ملف تعريف "docs"، وإذا قمت بتمكينه فسيحاول بناء مصادر asciidoc من src/main/asciidoc. كجزء من هذه العملية، سيبحث عن README.adoc ويعالجه عن طريق تحميل جميع عمليات التضمين، دون تحليلها أو عرضها، بل ينسخه فقط إلى ${main.basedir} (الافتراضي هو ${basedir}، أي جذر المشروع). إذا كانت هناك أي تغييرات في README، فستظهر بعد بناء Maven كملف معدل في المكان الصحيح. فقط قم بتسجيلها (commit) وادفع التغيير.

=== العمل مع الكود إذا لم يكن لديك تفضيل لبيئة تطوير متكاملة (IDE)، فننصحك باستخدام https://www.springsource.com/developer/sts[Spring Tools Suite] أو https://eclipse.org[Eclipse] عند العمل مع الكود. نستخدم إضافة https://eclipse.org/m2e/[m2eclipse] في eclipse لدعم Maven. بيئات التطوير والأدوات الأخرى يجب أن تعمل أيضًا دون مشكلات طالما أنها تستخدم Maven 3.3.3 أو أفضل.

==== الاستيراد إلى eclipse باستخدام m2eclipse نوصي باستخدام إضافة eclipse https://eclipse.org/m2e/[m2eclipse] عند العمل مع eclipse. إذا لم يكن m2eclipse مثبتًا لديك بالفعل، فهو متوفر من "سوق eclipse".

NOTE: الإصدارات الأقدم من m2e لا تدعم Maven 3.3، لذا بمجرد استيراد المشاريع إلى Eclipse، ستحتاج أيضًا إلى إخبار m2eclipse باستخدام ملف التعريف الصحيح للمشاريع. إذا رأيت العديد من الأخطاء المختلفة المتعلقة بملفات POM في المشاريع، فتأكد من أن لديك تثبيتًا محدثًا. إذا لم تتمكن من ترقية m2e، فأضف ملف التعريف "spring" إلى settings.xml الخاص بك. بدلاً من ذلك، يمكنك نسخ إعدادات المستودع من ملف التعريف "spring" في pom الرئيسي إلى settings.xml الخاص بك.

==== الاستيراد إلى eclipse بدون m2eclipse إذا كنت تفضل عدم استخدام m2eclipse، يمكنك إنشاء بيانات وصفية لمشروع eclipse باستخدام الأمر التالي:

[indent=0]

root@kitploit:~
$ ./mvnw eclipse:eclipse

يمكن استيراد مشاريع eclipse التي تم إنشاؤها عن طريق تحديد import existing projects من قائمة file.

=== JCE

إذا حصلت على استثناء بسبب "Illegal key size" وكنت تستخدم JDK من Sun، فستحتاج إلى تثبيت ملفات Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files. راجع الروابط التالية لمزيد من المعلومات:

https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html[Java 6 JCE]

https://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html[Java 7 JCE]

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html[Java 8 JCE]

استخرج ملفات JCE إلى مجلد JDK/jre/lib/security لأي إصدار من JRE/JDK x64/x86 تستخدمه.

== المساهمة

:spring-cloud-build-branch: master

يتم إصدار Spring Cloud بموجب ترخيص Apache 2.0 غير التقييدي، ويتبع عملية تطوير Github قياسية جدًا، باستخدام متتبع Github للمشكلات ودمج طلبات السحب في master. إذا كنت ترغب في المساهمة حتى بشيء بسيط، فلا تتردد، ولكن اتبع الإرشادات أدناه.

=== توقيع اتفاقية ترخيص المساهم قبل أن نقبل تصحيحًا (patch) أو طلب سحب غير بسيط، سنحتاج منك توقيع https://cla.pivotal.io/sign/spring[اتفاقية ترخيص المساهم]. توقيع اتفاقية المساهم لا يمنح أي شخص حقوق تسجيل (commit) في المستودع الرئيسي، ولكنه يعني أننا نستطيع قبول مساهماتك، وستحصل على إشادة كمؤلف إذا قمنا بذلك. قد يُطلب من المساهمين النشطين الانضمام إلى الفريق الأساسي، مع منحهم القدرة على دمج طلبات السحب.

=== مدونة قواعد السلوك يلتزم هذا المشروع بميثاق المساهمين https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[مدونة قواعد السلوك]. من خلال المشاركة، يُتوقع منك الالتزام بهذه المدونة. يرجى الإبلاغ عن السلوك غير المقبول إلى [email protected].

=== اصطلاحات الكود والأمور التنظيمية لا شيء من هذه الأمور ضروري لطلب السحب، لكنها جميعًا مفيدة. يمكن أيضًا إضافتها بعد طلب السحب الأصلي ولكن قبل الدمج.

  • استخدم اصطلاحات تنسيق الكود الخاصة بـ Spring Framework. إذا كنت تستخدم Eclipse فيمكنك استيراد إعدادات المنسق باستخدام ملف eclipse-code-formatter.xml من مشروع https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring Cloud Build]. إذا كنت تستخدم IntelliJ، فيمكنك استخدام https://plugins.jetbrains.com/plugin/6546[إضافة Eclipse Code Formatter] لاستيراد نفس الملف.
  • تأكد من أن جميع ملفات .java الجديدة تحتوي على تعليق Javadoc بسيط للفئة مع وسم @author واحد على الأقل يحدد هويتك، ويفضل أن يكون هناك فقرة واحدة على الأقل حول الغرض من الفئة.
  • أضف تعليق رأس ترخيص ASF إلى جميع ملفات .java الجديدة (انسخ من الملفات الموجودة في المشروع)
  • أضف نفسك كـ @author في ملفات .java التي تعدلها بشكل جوهري (أكثر من تغييرات تجميلية).
  • أضف بعض مستندات Javadoc، وإذا قمت بتغيير مساحة الاسم، بعض عناصر مستندات XSD.
  • القليل من اختبارات الوحدة سيساعد كثيرًا أيضًا -- يجب على شخص ما القيام بذلك.
  • إذا لم يكن أي شخص آخر يستخدم فرعك، فيرجى إعادة تأسيسه (rebase) على master الحالي (أو فرع هدف آخر في المشروع الرئيسي).
  • عند كتابة رسالة تسجيل (commit) يرجى اتباع https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[هذه الاصطلاحات]، وإذا كنت تصلح مشكلة قائمة، فيرجى إضافة Fixes gh-XXXX في نهاية رسالة التسجيل (حيث XXXX هو رقم المشكلة).

=== Checkstyle

يأتي Spring Cloud Build مع مجموعة من قواعد checkstyle. يمكنك العثور عليها في وحدة spring-cloud-build-tools. الملفات الأكثر بروزًا ضمن الوحدة هي:

.spring-cloud-build-tools/

└── src    ├── checkstyle    │   └── checkstyle-suppressions.xml <3>    └── main    └── resources    ├── checkstyle-header.txt <2>    └── checkstyle.xml <1>

<1> قواعد Checkstyle الافتراضية <2> إعداد رأس الملف <3> قواعد الكبت الافتراضية

==== تكوين Checkstyle

قواعد Checkstyle معطّلة افتراضيًا. لإضافة checkstyle إلى مشروعك، ما عليك سوى تعريف الخصائص والإضافات التالية.

.pom.xml

true <1> true <2> true <3> <4> io.spring.javaformat spring-javaformat-maven-plugin <5> org.apache.maven.plugins maven-checkstyle-plugin
root@kitploit:~
<reporting>
    <plugins>
        <plugin> <5>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>
---- <1> يفشل البناء عند حدوث أخطاء Checkstyle <2> يفشل البناء عند حدوث مخالفات Checkstyle <3> يحلل Checkstyle أيضًا مصادر الاختبار <4> أضف إضافة Spring Java Format التي ستعيد تنسيق الكود الخاص بك لتجاوز معظم قواعد تنسيق Checkstyle <5> أضف إضافة checkstyle إلى مراحل البناء وإعداد التقارير

إذا كنت بحاجة إلى كبت بعض القواعد (مثلًا، يجب أن يكون طول السطر أطول)، فيكفي تعريف ملف تحت ${project.root}/src/checkstyle/checkstyle-suppressions.xml مع عمليات الكبت الخاصة بك. مثال:.projectRoot/src/checkstyle/checkstyle-suppresions.xml

----

يُنصح بنسخ ${spring-cloud-build.rootFolder}/.editorconfig و ${spring-cloud-build.rootFolder}/.springformat إلى مشروعك. وبهذه الطريقة، سيتم تطبيق بعض قواعد التنسيق الافتراضية. يمكنك القيام بذلك عن طريق تشغيل هذا السيناريو:```bash $ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig $ touch .springformat

root@kitploit:~
=== إعداد IDE

==== Intellij IDEA

لإعداد Intellij، يجب عليك استيراد اصطلاحات الترميز الخاصة بنا، وملفات تعريف الفحص، وإعداد إضافة checkstyle.
يمكن العثور على الملفات التالية في مشروع https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build].

.spring-cloud-build-tools/
----
└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml <3>
    └── main
        └── resources
            ├── checkstyle-header.txt <2>
            ├── checkstyle.xml <1>
            └── intellij
                ├── Intellij_Project_Defaults.xml <4>
                └── Intellij_Spring_Boot_Java_Conventions.xml <5>
----
<1> قواعد Checkstyle الافتراضية
<2> إعداد ترويسة الملف
<3> قواعد الكتم الافتراضية
<4> الإعدادات الافتراضية للمشروع في Intellij والتي تطبّق معظم قواعد Checkstyle
<5> اصطلاحات نمط المشروع في Intellij والتي تطبّق معظم قواعد Checkstyle

.نمط الكود

image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-code-style.png[Code style]

انتقل إلى `File` -> `Settings` -> `Editor` -> `Code style`. ثم انقر على الأيقونة بجانب قسم `Scheme`. بعد ذلك، انقر على قيمة `Import Scheme` واختر خيار `Intellij IDEA code style XML`. استورد ملف `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml`.

.ملفات تعريف الفحص

image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-inspections.png[Code style]

انتقل إلى `File` -> `Settings` -> `Editor` -> `Inspections`. ثم انقر على الأيقونة بجانب قسم `Profile`. بعد ذلك، انقر على `Import Profile` واستورد ملف `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml`.

.إعداد Checkstyle

لكي يعمل Intellij مع Checkstyle، يجب عليك تثبيت إضافة `Checkstyle`. ويُنصح أيضًا بتثبيت `Assertions2Assertj` لتحويل تأكيدات JUnit تلقائيًا

image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-checkstyle.png[Checkstyle]

انتقل إلى `File` -> `Settings` -> `Other settings` -> `Checkstyle`. ثم انقر على أيقونة `+` في قسم `Configuration file`. هناك، ستحتاج إلى تحديد مصدر قواعد checkstyle. في الصورة أعلاه، اخترنا القواعد من مستودع Spring Cloud Build المستنسخ. ومع ذلك، يمكنك الإشارة إلى مستودع Spring Cloud Build على GitHub (مثلًا بالنسبة لـ `checkstyle.xml`: `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`). نحتاج إلى توفير المتغيرات التالية:

- `checkstyle.header.file` - يُرجى توجيهه إلى ملف `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` الخاص بـ Spring Cloud Build، إما في مستودعك المستنسخ أو عبر رابط `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt`.
- `checkstyle.suppressions.file` - قواعد الكتم الافتراضية. يُرجى توجيهه إلى ملف `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` الخاص بـ Spring Cloud Build، إما في مستودعك المستنسخ أو عبر رابط `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml`.
- `checkstyle.additional.suppressions.file` - هذا المتغير يقابل قواعد الكتم في مشروعك المحلي. على سبيل المثال، إذا كنت تعمل على `spring-cloud-contract`، فوجّهه إلى مجلد `project-root/src/checkstyle/checkstyle-suppressions.xml`. مثال على ذلك بالنسبة لـ `spring-cloud-contract` سيكون: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`.

مهم: تذكر ضبط `Scan Scope` على `All sources` لأننا نطبق قواعد checkstyle على مصادر الإنتاج والاختبار.
تنزيل الأداة
ApplicationContext
  • سياق تطبيق Bootstrap: سياق أصلي للتطبيق الرئيسي يمكن تدريبه للقيام بأي شيء (افتراضيًا، يرتبط بخادم Config ويفك تشفير قيم الخصائص).