تحسين الكود

الإعلانات

تحسين كودك بإستخدام تحقق لنت

 

 

تحسين الكود بإستخدام أداة lint

بالإضافة إلى التأكد من أن تطبيقك يلبي متطلباته الوظيفية، من خلال إجراء الإختبارات، من المهم أيضاً، ضمان عدم وجود أي

مشاكل هيكلية في كودك، من خلال تشغيل الكود بواسطة أداة لنت.

 

تساعدك أداة لنت lint في العثور على الأكواد ضعيفة البنية، والتي يمكن أن تؤثر على صلابة وكفاءة، تطبيقك، وتجعل من الصعب الحفاظ على الكود.

على سبيل المثال، إذا كانت ملفات مصادر XML تحتوي على مساحات أسماء “namespaces” غير مستخدمة، فإن ذلك يشغل

مساحة، ويترتب عليه إجراء معالجات غير ضرورية.

 

قد تؤدي المشكلات الهيكلية الأخرى، مثل إستخدام العناصر الموقوفة، أو إستدعاءات واجهة برمجة التطبيقات، التي لا تدعمها

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

لتحسين أداء الفحص بواسطة لنت، يجب عليك أيضاً إضافة التعليقات التوضيحية “annotations” إلى الكود.

 

 

نظرة عامة


يوفر اندرويد ستوديو أداة لفحص الكود تسمى لنت lint، والتي يمكن أن تساعدك على تحديد وتصحيح، المشكلات المتعلقة

بالجودة الهيكلية للكود دون الحاجة إلى تنفيذ التطبيق، أو كتابة حالات إختبار write test cases.

 

يتم الإبلاغ عن كل مشكلة تم إكتشافها بواسطة الأداة، مع رسالة تصف المشكلة، و مستوى الخطورة، بحيث يمكنك تحديد أولويات التحسين الهامة التي يلزم إجراؤها على وجه السرعة.

أيضاً، يمكنك خفض مستوى خطورة أي مشكلة، لتجاهل المشكلات التي لا تتعلق بمشروعك، أو رفع مستوى الخطورة لإبراز مشاكل معينة.

تقوم أداة لنت بفحص ملفات المصدر لمشروع اندرويد، بحثاً عن الأخطاء المحتملة، وتحقيق التحسين الأمثل للتأكد من الصحة،

الأمان، الأداء، سهولة الإستخدام، سهولة الوصول، والتدويل.

 

عند إستخدام اندرويد ستوديو، كلما قمت بإنشاء تطبيقك، يتم تشغيل عمليات فحص لينت و IDE التي تم تكوينها. ومع ذلك،

يمكنك تشغيل عمليات الفحص يدوياً أو تشغيل lint من سطر الأوامر.

 

ملاحظة: عندما يتم تجميع الكود الخاص بك في اندرويد ستوديو، يتم تشغيل عمليات الفحص الإضافية IntelliJ لتبسيط مراجعة الكود.

يوضح الشكل 1 كيفية قيام أداة لينت بمعالجة ملفات مصادر التطبيق.

الشكل 1. سير عمل فحص الكود بإستخدام أداة لينت.

 

 

تحسين الكود بإستخدام أداة lint

ملفات مصادر التطبيق

 

تتكون ملفات المصادر من، ملفات تشكّل مشروع اندرويد، بما في ذلك ملفات جافا، كوتلن، XML، الأيقونات، وملفات تكوين ProGuard.

ملف lint.xml

 

ملف التكوين الذي يمكنك إستخدامه لتحديد، فحوصات لينت التي تريد إستبعادها و تخصيص مستويات خطورة المشكلة.

أداة lint

 

أداة فحص كود ثابته، يمكنك تشغيلها على مشروع اندرويد الخاص بك، إما من خلال سطر الأوامر أو في اندرويد ستوديو (راجع عمليات الفحص يدوياً).

تقوم أداة lint بالتحقق من مشكلات الكود الهيكلية، و التي قد تؤثر على جودة وأداء تطبيق اندرويد الخاص بك. يوصى بشدة بتصحيح أي أخطاء تكتشفها أداة لينت قبل نشر التطبيق.

نتائج فحص لينت

 

يمكنك عرض نتائج أداة لينت إما من خلال وحدة التحكم، أو في نافذة نتائج الفحص Inspection Results في اندرويد ستوديو. راجع تشغيل عمليات الفحص يدوياً.

 

 

تحسين الكود بإستخدام أداة lint

 

تشغيل أداة lint من خلال سطر الأوامر


إذا كنت تستخدم اندرويد ستوديو أو Gradle، فيمكنك إستخدام Gradle wrapper لإستدعاء مهمة lint لمشروعك، عن طريق إدخال أحد الأوامر التالية من خلال الدليل الأصل لمشروعك:

على ويندوز:

gradlew lint

على لينوكس أو ماك:

./gradlew lint

يجب أن ترى مخرجات مشابهة لما يلي:

> Task :app:lint
Ran lint on variant release: 5 issues found
Ran lint on variant debug: 5 issues found
Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results.html
Wrote XML report to file:<path-to-project>/app/build/reports/lint-results.xml

عندما تُكمل أداة lint عمليات الفحص، تقوم بتوفير مسارات لإصدارات XML و HTML من تقرير lint. يمكنك بعد ذلك الإنتقال إلى تقرير HTML وفتحه في متصفحك، كما هو مبين في الشكل 2.

الشكل 2. نموذج تقرير لنت لـHTML.

 

إذا كان مشروعك يحتوي على متغيرات بناء build variants، وتريد بدلاً من ذلك، تشغيل مهمة lint لمتغير بناء محدد فقط، فيجب عليك كتابة اسم المتغير و وضع بادئة له بإستخدام لينت.

gradlew lintDebug

لمعرفة المزيد حول تشغيل مهام Gradle من خلال سطر الأوامر، اقرأ بناء تطبيقك من خلال سطر الأوامر.

 

 

تحسين الكود بإستخدام أداة lint

 

تشغيل لينت بإستخدام الأداة المستقلة

 

إذا لم تكن تستخدم اندرويد ستوديو أو Gradle، يمكنك إستخدام أداة لينت المستقلة، بعد تثبيت أداة اندرويد SDK، من مدير SDK. عندها يمكنك العثور على أداة لينت في المجلد /android_sdk/tools.

لتشغيل أداة لينت لقائمة من الملفات في مجلد المشروع، إستخدم الأمر التالي:

lint [flags] <project directory>

مثال، يمكنك إصدار الأمر التالي لفحص الملفات الموجودة ضمن المجلد myproject ومجلداته الفرعية. معرّف ID المشكلة

MissingPrefix يخبر لينت بفحص سمات XML فقط، التي تفتقد إلى بادئة مساحة اسم namespace اندرويد.

lint --check MissingPrefix myproject

لرؤية القائمة الكاملة للأعلام flags ومعطيات سطر الأوامر، المدعومة بواسطة الأداة، إستخدم الأمر التالي:

lint --help

المثال التالي يعرض مخرجات وحدة التحكم، عند تشغيل الأمر لينت لمشروع يسمى Earthquake.

$ lint Earthquake

Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
  <uses-sdk android:minSdkVersion="7" />
  ^
AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
  <uses-sdk android:minSdkVersion="7" />
  ^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings

المخرجات أعلاه تقوم بسرد أربعة تحذيرات وبدون أخطاء: الثلاث تحذيرات هي (ManifestOrder و UsesMinSdkAttributes و

UnusedResources) في ملف إيضاح AndroidManifest.xml المشروع، وتحذير رابع هو (IconMissingDensityFolder) في ملف مخطط Preferences.xml.

 

 

تحسين الكود بإستخدام أداة lint

 

تكوين لينت لمنع التحذيرات


إفتراضياً عند تشغيل فحص لينت، تقوم الأداة بالتحقق من جميع المشكلات التي تدعمها لينت. يمكنك أيضاً تقييد المشكلات التي

تقوم أداة لينت بفحصها وتعيين مستوى الخطورة لتلك المشكلات.

 

مثال، يمكنك منع تحقق لينت لمشاكل محددة، و التي لا تتعلق بمشروعك، ويمكنك تكوين لينت للإبلاغ عن المشكلات الغير حساسة بمستوى خطورة أقل.

 

يمكنك تكوين فحص لينت لمستويات مختلفة:

  • المستوى العالمي Globally (كامل المشروع)
  • نموذج المشروع Project module
  • نموذج الإنتاج Production module
  • نموذج الإختبار Test module
  • الملفات المفتوحة Open files
  • تسلسل الفئة Class hierarchy
  • نطاقات نظام التحكم في الإصدار (VCS)

 

تكوين لينت في اندرويد ستوديو

 

تقوم أداة لينت المدمجة، بفحص كودك أثناء إستخدامك لأندرويد ستوديو. يمكنك رؤية التحذيرات والأخطاء بطريقتين:

  • كنص منبثق في محرر الأكواد. عندما يجد لينت مشكلة، فإنه يظلل الكود ذو الإشكالية باللون الأصفر، أو للمشاكل الأكثر خطورة، فإنه يضع سطراً سفلياً تحت الكود باللون الأحمر.
  • في نافذة نتائج الفحص Inspection Results الخاصة بلينت، بعد النقر فوق Analyze > Inspect Code. راجع تشغيل عمليات الفحص يدوياً.

 

تكوين ملف لينت

يمكنك تحديد تفضيلات أداة الفحص لينت في ملف lint.xml. إذا قمت بإنشاء هذا الملف يدوياً، فضعه في الدليل الأصل لمشروع اندرويد.

يتكون ملف lint.xml من وسم حصر أساسي <lint> يحتوي على واحد أو أكثر من عناصر <issue> التابعة. تحدد Lint “قيمة سمة معرّف id فريدة” لكل عنصر <issue>.

<?xml version="1.0" encoding="UTF-8"?>
    <lint>
        <!-- list of issues to configure -->
</lint>

يمكنك تغيير مستوى خطورة أي مشكلة، أو تعطيل فحص لينت للمشكلة من خلال تعيين سمة الخطورة في الوسم <issue>.

نصيحة: للحصول على قائمة كاملة بالمشكلات المدعومة من قبل أداة لينت، ومعرّف المشكلة المطابق لها، قم بتشغيل الأمر lint –list.

 

نموذج ملف lint.xml

 

المثال التالي يعرض محتويات ملف lint.xml.

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the given check in this project -->
    <issue id="IconMissingDensityFolder" severity="ignore" />

    <!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
    <issue id="ObsoleteLayoutParam">
        <ignore path="res/layout/activation.xml" />
        <ignore path="res/layout-xlarge/activation.xml" />
    </issue>

    <!-- Ignore the UselessLeaf issue in the specified file -->
    <issue id="UselessLeaf">
        <ignore path="res/layout/main.xml" />
    </issue>

    <!-- Change the severity of hardcoded strings to "error" -->
    <issue id="HardcodedText" severity="error" />
</lint>

 

تكوين فحص لينت لملفات مصادر جافا، كوتلن، XML

 

يمكنك تعطيل لينت عن فحص ملفات مصادر جافا، كوتلن، XML.

نصيحة: يمكنك إدارة ميزة فحص لينت، لملفات مصادر جافا أو كوتلن أو XML في مربع الحوار التفضيلات الإفتراضية Default Preferences.

حدد File > Other Settings > Default Settings، ثم في الجزء الأيمن من مربع الحوار التفضيلات الإفتراضية، حدد Editor > Inspections.

تكوين فحص لينت في جافا أو كوتلن

 

لتعطيل فحص لينت، على وجه التحديد لفئة أو دالة في مشروع اندرويد، قم بإضافة التعليق التوضيحي SuppressLint@ إلى ذلك الكود.

يوضح المثال التالي كيف يمكنك إيقاف تشغيل فحص لينت، لمشكلة NewApi في دالة الإنشاء onCreate. سوف تستمر أداة lint في التحقق من مشكلة NewApi في الدوال الأخرى لهذه الفئة.

KOTLIN

@SuppressLint("NewApi")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

JAVA

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

 

يعرض المثال التالي كيفية إيقاف تشغيل فحص لينت لمشكلة ParserError في الفئة FeedProvider:

KOTLIN

@SuppressLint("ParserError")
class FeedProvider : ContentProvider() {

JAVA

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

لمنع التحقق من كافة مشاكل لينت في الملف، إستخدم الكلمة الأساسية all، هكذا:

KOTLIN

@SuppressLint("all")

JAVA

@SuppressLint("all")

 

تكوين تحقق لينت في XML

 

يمكنك إستخدام السمة tools:ignore لتعطيل فحص لينت لأقسام معينة من ملفات XML. ضع قيمة مساحة الاسم التالية في ملف lint.xml لكي تتعرف أداة lint على السمة:

namespace xmlns:tools="http://schemas.android.com/tools"

يوضح المثال التالي كيف يمكنك إيقاف تشغيل فحص لينت لمشكلة UnusedResources في عنصر <LinearLayout> لملف مخطط XML.

تتم وراثة سمة التجاهل من قِبل العناصر الفرعية، للعنصر الرئيسي، الذي تم فيه تعريف السمة. في هذا المثال، يتم تعطيل فحص لينت أيضاً لعنصر <TextView> التابع.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedResources" >

    <TextView
        android:text="@string/auto_update_prompt" />
</LinearLayout>

لتعطيل أكثر من مشكلة واحدة، قم بسرد المشكلات المراد تعطيلها بسلسلة مفصولة بفواصل. مثال:

tools:ignore="NewApi,StringFormatInvalid"

لمنع التحقق من جميع مشكلات لينت، في العنصر XML، إستخدم الكلمة الأساسية all كما يلي:

tools:ignore="all"

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

اترك رد