Tslint: ابدأ في إهمال قاعدة عدم استخدام المتغير

تم إنشاؤها على ١٣ أغسطس ٢٠١٦  ·  30تعليقات  ·  مصدر: palantir/tslint

لقد لاحظت للتو عمليات تحقق المترجم الجديدة هذه في الإصدار 2.0: --noUnusedParameters و --noUnusedLocals . هذه بشكل أساسي تجعل قاعدة no-unused-variable عفا عليها الزمن. نظرًا لأنها قاعدة أساسية جدًا ، لا أعتقد أنه يجب علينا إزالتها على الفور.

عرض:

  • إزالة no-unused-variable من tslint:latest & tslint:recommended في الإصدار 4.0
  • ضع علامة على القاعدة على أنها مهملة في الإصدار 4.0

    • ربما في رسالة الفشل؟

  • قم بإزالة تطبيق القاعدة بالكامل في TSLint v5.0
Won't Fix Breaking Change

التعليق الأكثر فائدة

ردود فعل صغيرة. يعد وجود هذه القواعد في tslint مناسبًا حقًا حيث تحصل على تحذير linter ، لكن التعليمات البرمجية الخاصة بك لا تزال مجمعة. أنا شخصياً أجد أنه من المزعج للغاية أن يكون لديك فشل في المترجم بسبب متغير أو معلمة أو استيراد غير مستخدم خاصة عند إجراء تغيير سريع في الكود مثل إعادة بناء أو تجربة فكرة.

ال 30 كومينتر

الميزة الجيدة هنا هي أن المترجم يوفر إلغاء الاشتراك: أعطِ اسمًا متغيرًا شرطة سفلية بادئة ولن يقوم المترجم بوضع علامة عليه. يجب أن يسهل هذا الأمر على الأشخاص الذين يرغبون في تمكين عمليات التحقق المعقدة ولكن قد يكون لديهم حالة حافة أو اثنتين لا يريدون تغييرهما.

JKillian هذا ينطبق فقط على المعلمات ، أليس كذلك؟

@ glen-84 - التقاط جيد ، أعتقد أنك على صواب.

adidahiya فقط لاحظ أن --noUnusedLocals و no-unused-variable يعملان بشكل مختلف تمامًا.

يتحقق --noUnusedLocals من خصائص الفئة أيضًا كما يبدو (في TS الإصدار 2.0.2).

charsleysa نعم ، التنفيذ مختلف قليلاً. أعتقد أن خيارات المترجم أفضل من قاعدة TSLint ، ولهذا السبب أريد تفضيلها. كما هو مذكور في منشور الإصدار الأصلي ، سنقوم بإزالته ببطء من TSLint core.

أعتقد أنه يجب عليك إزالته في الإصدار 4. يجب أن يكون هناك العديد من إصدارات المعاينة حيث يجب على جميع المطورين رؤية تحذير الإيقاف. وقمت بإزالة القواعد الأخرى لصالح خيارات المترجم بأي حال.

PD: في إصدار dev-1 ، أعتقد أن هذا كإعدادات موصى بها.

تمامًا كقليل من التعليقات ، لقد واجهت هذه المشكلة الليلة وحتى بعد العثور على هذه المشكلة ، استغرق الأمر مني بعض الشيء لأفهم أن --noUnusedLocals و --noUnusedParameters كانت تكوينات tsc وليست tslint. قد يكون من المفيد توضيح ذلك في رسالة الخطأ.

ryanguill شكرا على ردود الفعل. قمت بإجراء تغيير يوضح الرسالة

ردود فعل صغيرة. يعد وجود هذه القواعد في tslint مناسبًا حقًا حيث تحصل على تحذير linter ، لكن التعليمات البرمجية الخاصة بك لا تزال مجمعة. أنا شخصياً أجد أنه من المزعج للغاية أن يكون لديك فشل في المترجم بسبب متغير أو معلمة أو استيراد غير مستخدم خاصة عند إجراء تغيير سريع في الكود مثل إعادة بناء أو تجربة فكرة.

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

إلى zubivan

يوافق. أفضل الاحتفاظ بهذا التحذير في مرحلة النسالة. سير العمل الخاص بي هو:

any file/code changes => run ts-compile => run tests => run ts-lint

يمكنني إجراء أي تغيير في التعليمات البرمجية القذرة بسرعة واختبار النتائج أولاً ، ثم استيفاء الحماية من tslint. إن إجبارك على كتابة كود نظيف قبل أي اختبار أمر مزعج حقًا.

إلى michaeljota

على الرغم من أنني أفضل عرض التحذير بعد الاختبار ، فهل هناك أي مثال على حزمة الويب لتحقيق الهدف؟

أتساءل عما إذا كان بإمكان TSLint تشغيل المترجم ، وتحليل وإخراج تحذيراته كتحذيرات TSLint؟ سيحرر TSLint من الاضطرار إلى الحفاظ على تنفيذ القاعدة ولكنه سيسمح للمستخدمين بالاستمرار في استخدام تعطيل / تجاهل تعليقات TSLint من بين مزايا أخرى.

xareelee في ملف التعريف الخاص بي ، يمكنك رؤية إعداد Angular 2 مع تجميع TS دون رمي.

لا أفهم لماذا هؤلاء جزء من المترجم. إنها أسلوبية بحتة ، ولا تؤثر على صحة الكود ، لذا فهي تبدو أكثر طبيعية كخيارات لينتر. أريد أيضًا القدرة على تجاوز هذه التحذيرات في حالات معينة ، وهو ما يمكنني فعله باستخدام tslint ولكن ليس باستخدام tsc.

لماذا هذه جزء من المترجم الآن ، إنه ليس شيئًا للمناقشة هنا. لا أعتقد أنهم سوف يقرؤون هذه القاعدة ، لأسباب تم الكشف عنها بالفعل.

بالنسبة لأي شخص آخر يبحث عن حل لهذا لأنهم لا يريدون استخدام خيارات المترجم نظرًا لحقيقة أنهم سيمنعون التطوير المحلي السريع (التعليق على بعض التعليمات البرمجية ، وما إلى ذلك قد يفشل في الترجمة) ، يمكنك القيام بشيء مثل هذه:

const Rule = require('tslint/lib/rules/noUnusedVariableRule').Rule;

// Hide deprecation message
Rule.metadata.deprecationMessage = '';
Rule.metadata.ruleName = 'no-unused-variable-wrapped';

module.exports.Rule = Rule;

في قاعدتك الخاصة noUnusedVariableWrapped.js file ثم قم بتمكينها عبر "no-unused-variable-wrapped": true .

أود أن أشير إلى أن شيئًا واحدًا قد فقده اعتمادًا على قاعدة المحول البرمجي وليس قاعدة tslint وهو القدرة على التصحيح التلقائي وإزالة الواردات / المتغيرات غير المستخدمة.

يبدو أن هناك اهتمامًا كبيرًا بالحفاظ على هذه القاعدة. لقد تقدمت ودمجت # 2256 ، والذي لا يلغي القاعدة. لا يزال لا يتم تشجيعه في التكوينات المضمنة ، ولكنه سيكون متاحًا على أساس الاشتراك.

يبدو أنه إذا كان لديك tsconfig يحتوي على "jsx": "react" ، فيجب أن يتسبب tslint في حدوث خطأ بسبب فقد استيراد التفاعل.

ccorcos "استيراد مفقود" خطأ مختلف تمامًا عن "لا يوجد متغير غير مستخدم". يجب أن يساعدك tsc هناك.

يبدو ذلك جيدا. أنا فقط لا أرى هذا الخطأ في VSCode ...: /

مرحبا adidahiya ،

شكرا لأخذ هذه القاعدة مرة أخرى. السؤال هو متى سيصدر؟ كما أرى لم يتم تضمينه بعد في 5.1.0.

@ javier-tarazaga إنه موجود في الإصدار 5 ، تمامًا كما كان دائمًا. لم يتم تمكينه في تكوين tslint:recommended بالرغم من ذلك.

مرحبا adidahiya ،

أم عجيب. عندما أقوم بتضمين القاعدة في إصدار tslint 5.1.0 ، أحصل على الخطأ التالي ،

Could not find implementations for the following rules specified in the configuration:
    no-unused-vars
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.

هذا لأنك استخدمت اسم ملف خاطئ. إنه ليس متغير غير مستخدم ، ليس كذلك
لا فارز غير مستخدمة

Am 02.05.2017 09:33 schrieb "Javier Tarazaga" [email protected] :

مرحبا adidahiya https://github.com/adidahiya ،

أم عجيب. عندما أقوم بتضمين القاعدة في إصدار tslint 5.1.0 ، أحصل على
الخطأ التالي ،

تعذر العثور على تطبيقات للقواعد التالية المحددة في التهيئة:
لا فارز غير مستخدمة
حاول ترقية TSLint و / أو التأكد من تثبيت جميع القواعد المخصصة الضرورية.
إذا تمت ترقية TSLint مؤخرًا ، فقد يكون لديك قواعد قديمة مهيأة تحتاج إلى التنظيف.

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh
.

وذلك بفضل لرؤساء متابعة! أنا الآن أواجه # 2650 لذا لا يمكنني التحقق منه حقًا.

لقد قمت بتثبيت https://github.com/blakeembrey/tslint-config-standard
هل هناك طريقة للتخلص من هذه التحذيرات ، لست متأكدًا مما إذا كانت مرتبطة بـ tslint القياسي أم فقط

> [email protected] lint /Users/nikos/WebstormProjects/common
> tslint 'src/**/*.ts' 'test/**/*.ts'

Warning: The 'await-promise' rule requires type information.
Warning: The 'no-unused-variable' rule requires type information.
Warning: The 'no-use-before-declare' rule requires type information.
Warning: The 'return-undefined' rule requires type information.
Warning: The 'no-floating-promises' rule requires type information.
Warning: The 'no-unnecessary-qualifier' rule requires type information.
Warning: The 'no-unnecessary-type-assertion' rule requires type information.
Warning: The 'strict-type-predicates' rule requires type information.

QuantumInformation هل حاولت استخدام --project ؟

نعم هذا يعمل شكرا

🤖 صوت صفير! 👉 تم إهمال TSLint 👈 ويجب عليك التبديل إلى print-eslint ! 🤖

🔒 تم إقفال هذه المشكلة لمنع المزيد من المناقشات غير الضرورية. شكرا لك! 👋

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات