গ্রেডলে অব্যবহৃত নির্ভরতা কীভাবে সন্ধান করবেন / সরিয়ে ফেলবেন


উত্তর:


72

আপডেট: 28-06-2016: অব্যবহৃত-নির্ভরতাতে অ্যান্ড্রয়েড সমর্থন

ইন জুন, 2017 , তারা মুক্তি 4.0.0 version এবং মূল প্রকল্পের নাম নতুন নামকরণ "gradle-lint-plugin"করা "nebula-lint-plugin"অব্যবহৃত-নির্ভরতাতে তারা Android সমর্থনও যুক্ত করেছে ।


ইন মে 2016 Gradle বাস্তবায়ন করেছে Gradle তিসি প্লাগইন খোঁজার এবং অবাঞ্ছিত নির্ভরতা সরানোর জন্য

গ্রেডল লিন্ট প্লাগইন: সম্পূর্ণ ডকুমেন্টেশন

গ্রেডল লিন্ট প্লাগইন গ্রেডল স্ক্রিপ্টস এবং সম্পর্কিত ফাইলগুলিতে অপব্যবহার বা অবমূল্যায়নের নিদর্শনগুলি সনাক্তকরণ এবং প্রতিবেদন করার জন্য একটি প্লাগযোগ্য এবং কনফিগারযোগ্য লিন্টার সরঞ্জাম।

এই প্লাগইনটির বিভিন্ন বিধি রয়েছে। অব্যবহৃত নির্ভরতা বিধি তাদের মধ্যে একটি। এর তিনটি সুনির্দিষ্ট বৈশিষ্ট্য রয়েছে।

  1. অব্যবহৃত নির্ভরতা সরিয়ে দেয়।
  2. প্রথম অর্ডার নির্ভরতা সুস্পষ্টভাবে সরাসরি আপনার কোড দ্বারা ব্যবহৃত ট্রানজিটিভ নির্ভরতা প্রচার করে।
  3. 'সঠিক' কনফিগারেশনে নির্ভরতা পুনরায় স্থানান্তর করে।

নিয়ম প্রয়োগ করতে, যুক্ত করুন:

gradleLint.rules += 'unused-dependency'

অব্যবহৃত নির্ভরতা বিধি সম্পর্কে বিশদটি শেষ অংশে দেওয়া আছে।

গ্রেডল লিন্ট প্লাগইন প্রয়োগ করতে:

buildscript { repositories { jcenter() } }
plugins {
  id 'nebula.lint' version '0.30.2'
}

বিকল্পভাবে:

buildscript {
  repositories { jcenter() }
  dependencies {
    classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
  }
}

apply plugin: 'nebula.lint'

কোন বিধিগুলির বিরুদ্ধে আপনি লিঙ্ক দিতে চান তা নির্ধারণ করুন:

gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like

একটি এন্টারপ্রাইজ বিল্ডের জন্য, আমরা একটি init.gradle স্ক্রিপ্টে বা গ্রেডল স্ক্রিপ্টে লিন্টের নিয়মগুলি সংজ্ঞায়িত করার পরামর্শ দিই যে প্রক্রিয়াটি থেকে গ্র্যাডলের মাধ্যমে অন্তর্ভুক্ত রয়েছে।

মাল্টিমিডুল প্রকল্পগুলির জন্য, আমরা একটি allprojectsব্লকে প্লাগইন প্রয়োগ করার পরামর্শ দিই :

allprojects {
  apply plugin: 'nebula.lint'
  gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}


বিস্তারিত অব্যবহৃত নির্ভরতা রুল এই অংশ দেওয়া হয়

নিয়ম প্রয়োগ করতে, যুক্ত করুন:

gradleLint.rules += 'unused-dependency'

নিয়ম পরিদর্শন আপনার প্রকল্পের ধোওয়া থেকে নির্গত বাইনেরিতে কম্পাইল উৎস সেট বর্গ রেফারেন্স খুঁজছেন এবং নির্ভরতা যে আপনি আপনার মধ্যে ঘোষণা করেছেন সেই রেফারেন্স সাথে মেলে নির্ভরতা ব্লক।

বিশেষত, নিয়মটি নির্ভরতাগুলিতে নিম্নলিখিত সমন্বয়গুলি করে:

1. অব্যবহৃত নির্ভরতা অপসারণ

  • Com.amazonaws এর মতো পারিবারিক ধাঁচের জারগুলি: আউস-জাভা-এসডিকে সরানো হয়েছে, কারণ এতে কোনও কোড নেই

২. ট্রান্সজিটিভ নির্ভরতাগুলি প্রচার করে যা আপনার কোড দ্বারা সরাসরি প্রথম অর্ডার নির্ভরতাগুলি স্পষ্টভাবে ব্যবহার করা হয়

  • Com.amazonaws: aws-java-sdk এর মতো পারিবারিক স্টাইল জেআর ফাইলগুলি ভেঙে দেওয়ার পার্শ্ব প্রতিক্রিয়া রয়েছে: আপনি যে অংশগুলি ব্যবহার করছেন প্রকৃতপক্ষে যে অংশগুলি ব্যবহার করছেন এবং এটি প্রথম অর্ডার নির্ভরতা হিসাবে যুক্ত করেছেন

৩. 'সঠিক' কনফিগারেশনের উপর নির্ভরতা পুনরায় স্থানান্তর করে

  • ওয়েবজারগুলি রানটাইম কনফিগারেশনে সরানো হয়েছে
  • জেআর ফাইলগুলিতে মেটা-আইএনএফের বাইরে কোনও শ্রেণি এবং সামগ্রী নেই run রানটাইমে স্থানান্তরিত হয়
  • 'xerces', 'xercesImpl', 'xML-apis' সর্বদা রানটাইম স্কোপ করা উচিত
  • মাইএসকিএল-সংযোজক-জাভা এর মতো পরিষেবা সরবরাহকারী (মেটা-আইএনএফ / পরিষেবাদিযুক্ত জেআর ফাইলগুলি) রানটাইমে স্থানান্তরিত হয় যদি কোনও কার্যকর সংকলন-সময় উল্লেখ নেই
  • নির্ভরতাগুলি সর্বাধিক উত্স সেট কনফিগারেশনে স্থানান্তরিত হয়। উদাহরণস্বরূপ, মূল উত্স সেট (বিরল) এর উপর সুস্পষ্ট নির্ভরতা না থাকলে 'জুনিট' টেস্ট কমপ্লেলে স্থানান্তরিত হয়।


আপডেট: পূর্ববর্তী প্লাগইনগুলি

আপনার ধরনের তথ্যের জন্য, আমি পূর্ববর্তী প্লাগইনগুলি সম্পর্কে ভাগ করতে চাই

  1. গ্র্যাডল প্লাগইন যা অব্যবহৃত নির্ভরতা, ঘোষিত এবং ট্রানজিটিভ খুঁজে পায় তা হল com.github.nullstress.d dependency-বিশ্লেষণ

তবে এর সর্বশেষ সংস্করণ 1.0.3 23 ডিসেম্বর 2014 তৈরি হয়েছে । এর পরে কোনও আপডেট নেই।

এনবি: আমাদের ইঞ্জিনিয়ারদের মধ্যে অনেকেই এই প্লাগইনটি সম্পর্কে বিভ্রান্ত হচ্ছেন কারণ তারা কেবল সংস্করণ নম্বর আপডেট করেছেন, অন্য কিছুই নয়।


গ্রেড-লিন্ট-প্লাগইন কি অ্যান্ড্রয়েডের সাথে সামঞ্জস্যপূর্ণ?
জয়থাকিং

@ জয়থাকিং হ্যাঁ আপনি এই লিঙ্কটি দিয়ে যেতে পারেন: সরঞ্জাম . android.com/tech-docs/new-build-s systemm/… । আশা করি এটি আপনাকে পরিষ্কার করে দেবে।
স্কাইওয়াকার

@ জয়থাকিং - আজ অ্যান্ড্রয়েডের অব্যবহৃত নির্ভরতার জন্য পরীক্ষামূলক সমর্থন যুক্ত হয়েছে 4.0 সংস্করণ সহ 4.0.0
jkschneider

4
দুর্ভাগ্যক্রমে এই প্লাগইনটি কোটলিন ডিএসএল নিয়ে কাজ করে না। এটি সমর্থন করার কোনও পরিকল্পনা তাদের নেই।
তুষারপাত

3
এছাড়া নতুন gradle কনফিগারেশনের সাথে কাজ করে না (যেমন: implementationএবং api), এবং এমনকি খারাপ, পুরাতন অননুমোদিত বেশী নতুন বেশী থেকে পরিবর্তন পরামর্শ দেওয়া হচ্ছে (যেমন: compile, testCompile, ইত্যাদি)।
লরেন্স গনসাল্ভেস

8

পূর্বের উত্তরে উল্লিখিত প্রকল্পটি মৃত বলে মনে হচ্ছে। আমি গ্রেড-নির্ভরতা-বিশ্লেষণ ব্যবহার করি । সেটআপ সহজ:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
  }
}

apply plugin: 'ca.cutterslade.analyze'

তারপরে:

$ gradle analyzeDependencies

4
আমি এই ত্রুটির মুখোমুখি হয়েছি: 'গ্রেডল সিঙ্ক ব্যর্থ হয়েছে: প্রকল্পের মধ্যে' ক্লাস 'নাম সহ টাস্ক পাওয়া যায়নি
পবন

আমি স্ট্যাকওভারফ্লোএক্সসেপশন পেয়েছি। যদিও এর কারণ কী তা সুনির্দিষ্ট তথ্য নেই। আমি মনে করি যে এখানে একটি বিজ্ঞপ্তি নির্ভরতা সমস্যা হতে পারে তবে এটি একটি দুর্দান্ত ধারণা হবে যা সরঞ্জামটি আমাকে কোথায় বলেছে।
এসগাল

1
@ পাওয়ান এই প্লাগইনটি অ্যান্ড্রয়েড প্রকল্পগুলির সাথে কাজ করে না এবং এটি শীঘ্রই যে কোনও সময় পরিবর্তিত হবে না। প্রুফ: github.com/wfhartford/gradle-d dependency
analyze

8

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

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
    }
}

এবং

apply plugin: "dependencyAnalysis"

একবারে এটি স্থানে থাকলে চালান gradle analyze। যদি অব্যবহৃত নির্ভরতা থাকে তবে আপনি একটি বিল্ড ব্যর্থতা পাবেন যা নীচের পাঠ্যের অনুরূপ আউটপুট দেখায় এবং অব্যবহৃত নির্ভরতাগুলির তালিকা (উভয় ঘোষিত এবং ট্রানজিটিভ)। বিল্ড ব্যর্থতা সত্যই কার্যকর যদি আপনি এটি প্রয়োগ করতে চান যে সিআই বিল্ডের মাধ্যমে কোনও অব্যবহৃত নির্ভরতা থাকা উচিত না।

:foo:analyze FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':foo:analyze'.
> The project has unused declared artifacts

3
আমি পেয়েছি "টাস্কের জন্য নির্বাহ ব্যর্থ ': অ্যাপ: বিশ্লেষণ'।> প্রকল্পে জাভা প্লাগইন প্রয়োগ করা হয়নি" " যদি আমি "প্রয়োগ প্লাগইন: 'জাভা'" যোগ করি তবে আমি এটির বিদ্যমান অ্যান্ড্রয়েড অ্যাপ্লিকেশন প্লাগইনের সাথে সামঞ্জস্যপূর্ণ নয় বলেছি। কোন ধারনা?
অ্যালেক্স ব্ল্যাক

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

প্লাগইনটিতে বাগ রয়েছে, যেমন উদাহরণস্বরূপ যখন আপনার কোনও নির্ভরতার কাছে স্থির কল থাকে তবে তা বিবেচনায় নেওয়া হয় না।
ToYonos

এটি লিন্টার প্লাগইনটির জন্য অবহেলিত বলে মনে হচ্ছে
রূথি রুথ

2

আমি এই সম্পর্কে কেবল শিখেছি: https://plugins.gradle.org/plugin/com.autonomousapps.d dependency- analysis

GitHub

চেহারা থেকে এটি সক্রিয় বিকাশের অধীনে রয়েছে তবে আমি এখনও এটি পরীক্ষা করে দেখিনি।

সম্পাদনা করুন: আসলে এটি দুর্দান্ত ভয়ঙ্কর, এটি প্রচুর পরামর্শ সরবরাহ করে (যেমন এপিআই বনাম বাস্তবায়ন ব্যবহার করা হয় কিনা)


0

সম্পাদকের দ্রষ্টব্য: এই উত্তরটি পুরানো। দয়া করে দেখতে শীর্ষ উত্তর

আপনি com.github.nullstress.d dependency- বিশ্লেষণ গ্রেড প্লাগইন চেষ্টা করতে পারেন

সমস্ত গ্রেডল সংস্করণে ব্যবহারের জন্য স্ক্রিপ্ট স্নিপেট তৈরি করুন:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
  }
}

apply plugin: "com.github.nullstress.dependency-analysis"

গ্রেডেল ২.১ এ প্রবর্তিত নতুন, ইনকিউবেটিং, প্লাগইন প্রক্রিয়াটির জন্য স্ক্রিপ্ট স্নিপেট তৈরি করুন:

plugins {
  id "com.github.nullstress.dependency-analysis" version "1.0.3"
}

এছাড়াও, এই সম্পর্কে গ্রেড ফোরামে একটি থ্রেড রয়েছে ( "এমভিএন নির্ভরতা: বিশ্লেষণ করুন"? এর সমুদ্রের সমতুল্য কি আছে )।


এই প্লাগইনটি একটি মৃত প্রকল্প বলে মনে হচ্ছে ... কমপক্ষে বর্তমান গ্রেডল সংস্করণ সহ।
সিজেস্টেহনো

0

Historicalতিহাসিক উত্তরের বেশিরভাগ প্রকল্পগুলি মারা গেছে তবে গ্রেড-নির্ভরতা-বিশ্লেষণ 2016-05-30 পর্যন্ত জীবিত বলে মনে হচ্ছে।


আমি কয়েক সপ্তাহ আগে তাদের নীহারিকা-লিঙ্কে পরিবর্তন করতে দেখছি।
প্যারিসে নির্মিত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.