সুইফ্টের কি # বিশিষ্ট সমতুল্য রয়েছে? এটি সহজেই এক্সকোডের নিজস্ব জিইউতে একটি সতর্কতা দেখানোর জন্য ব্যবহৃত হয়
# অররের সমতুল্য কিনা তা নিয়েও আমি আগ্রহী।
অ্যাপল জানিয়েছে যে # প্রাগমা চিহ্ন শীঘ্রই আসছে, এটি সম্ভবত এটির সাথে একই রকম হতে পারে।
সুইফ্টের কি # বিশিষ্ট সমতুল্য রয়েছে? এটি সহজেই এক্সকোডের নিজস্ব জিইউতে একটি সতর্কতা দেখানোর জন্য ব্যবহৃত হয়
# অররের সমতুল্য কিনা তা নিয়েও আমি আগ্রহী।
অ্যাপল জানিয়েছে যে # প্রাগমা চিহ্ন শীঘ্রই আসছে, এটি সম্ভবত এটির সাথে একই রকম হতে পারে।
উত্তর:
ভবিষ্যতে, অ্যাপল ডেভস খুব ভালভাবে একটি //WARNING:
ল্যান্ডমার্ক প্রকাশ করতে পারে , বা অন্য নামকৃত ল্যান্ডমার্কের জন্য কার্যকারিতা সরবরাহ করতে পারে।
এক্সকোডে সুইফটের সাথে আজ এই কার্যকারিতাটি উপেক্ষা করার জন্য, আপনি বেন ডডসন এবং জেফরি স্যামবেলস দ্বারা বর্ণিত হিসাবে নিম্নলিখিতটি করতে পারেন:
আপনার টার্গেটের বিল্ড পর্যায়ক্রমে ট্যাবটিতে একটি নতুন রান স্ক্রিপ্ট যুক্ত করুন (প্রকল্প সেটিংস> বিল্ড পর্যায়সমূহ> '+'> নতুন রান স্ক্রিপ্ট ফেজ) এবং খালি বাক্সে নিম্নলিখিত কোডটি আটকে দিন:
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
এটি আপনার চিহ্নিতকরণের কোনও মন্তব্য // TODO:
বা // FIXME:
মন্তব্যের জন্য এক্সকোডকে সংকলন সময়ে ফ্ল্যাগ করতে বাধ্য করবে ।
বিকল্পভাবে, আপনি ট্যাগগুলি একটি কাস্টম ট্যাগ দিয়ে সংশোধন করতে পারেন: TAGS="WARNING:"
উপরের কোডে যা TODO এবং FIXME এর জন্য ডিফল্ট আচরণ রাখে এবং হিসাবে চিহ্নিত কোনও মন্তব্যে একটি সংকলন সময় সতর্কতা উত্থাপন করবে // WARNING:
।
http://bendodson.com/weblog/2014/10/02/show-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- সতর্কবার্তা-থেকে-করণীয়-মন্তব্য
সম্পাদনা: 18/11/14
@ ডেভিড-এইচ তার মন্তব্যে একটি ভাল বক্তব্য তুলে ধরেছে। আপনি যদি কেবলমাত্র একটি নির্দিষ্ট বিল্ড কনফিগারেশনে এই সতর্কতাগুলি বাড়াতে চান, আপনি নিম্নলিখিতগুলি করতে পারেন:
if [ "${CONFIGURATION}" = "Debug" ]; then
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
fi
বিকল্পভাবে, আপনি কেবল উত্পাদন বিল্ডগুলি লক্ষ্য করে "ডিবাগ" না দিয়ে "মুক্তি" ব্যবহার করতে পারেন।
-type f
জন্য find
কমান্ডের বিকল্পটি যুক্ত করতে হয়েছিল । এটি বেশিরভাগ মানুষের জন্য সমস্যা হওয়া উচিত নয়, তবে যে কেউ R.swift
পোড ব্যবহার করেন তিনি আমার একই ত্রুটিতে চলে যাবেন কারণ R.swift
এটি একটি ডিরেক্টরি ছিল
সম্পাদন করা
সুইফট ৪.২ অনুসারে, বিল্ড সতর্কতা এবং ত্রুটি উভয়ের জন্য ভাষা স্তর সমর্থন উপলব্ধ।
#warning("Warning description")
#error("Throws a build error")
আসল উত্তর
দ্রুত, নোংরা এবং ওহ একই সাথে একইসাথে সহজ।
// Description of what you need to fix
var FIX_ME__🛠🛠🛠: AnyObject
একটি সতর্কতা ফেলে যে 'FIX_ME__🛠🛠🛠' কখনও ব্যবহার করা হয়নি never
আপনি যদি চান তবে আপনি ভেরিয়েবল নামের সাথে ইমোটিকন যুক্ত করতে পারেন ... আমি প্রায়শই এমন কিছুর জন্য 😱 এবং use ব্যবহার করি, যার জন্য এমনকি আমি বিবেচনা করব fix আপনি প্রতিস্থাপন করতে পারেন FIX_ME__
যা চাও সঙ্গে ALGORITHM_NEEDS_REVIEW
, BugID_148
অথবা JOHNNY_YOU_BROKE_THIS
কিছু উদাহরণ।
দ্রুত, কোনও সেটআপ, সংক্ষিপ্ত এবং ইমোটিকনগুলি এমনকি আপনার কোডটিতে হাস্যরস / ব্যক্তিত্ব যুক্ত করতে পারে না। কখনও কখনও সবচেয়ে সহজ সমাধান হ'ল সেরা সমাধান best
let fixMeMakeMeNonOptional: Int
আপনাকে দেয় Immutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
। অন্যান্য সমস্ত সমাধান আপনাকে অনেক বেশি জেনেরিক ত্রুটি বার্তা দেয়।
এক্সকোড 10 এবং সুইফট 4.2 দিয়ে শুরু করে আপনি এখন #warning
আবার এর মতো ব্যবহার করতে সক্ষম হবেন :
#warning("TODO: Clean up this code after testing")
এটি এক্সকোডে প্রত্যাশার মতো সতর্কবার্তা হিসাবে প্রদর্শিত হবে!
এটি #if
চেকগুলির সাথেও সমন্বিতভাবে কাজ করে, উদাহরণস্বরূপ নিম্নলিখিতগুলি কেবলমাত্র একটি টার্গেট প্রদর্শন করবে যদি আপনার লক্ষ্য প্ল্যাটফর্মটি আইওএস হয়:
#if os(iOS)
#warning("this code is untested in iOS")
#endif
এর রয়েছে #error
যদি আপনি আপনার বিল্ড ব্যর্থ করতে চান।
এক্সকোড 6 ব্যবহার করে সুইফটে আপনি বিভিন্ন উদ্দেশ্যে বিভিন্ন ধরণের ল্যান্ডমার্ক ব্যবহার করতে পারেন । অ্যাপল এটি সম্পর্কে যা বলেছে তা এখানে:
এক্সকোড এখন // মার্ক:, // টোডো: এবং // ফিক্সএমই: আপনার কোডটি বর্ণনা করার জন্য ল্যান্ডমার্কগুলি সমর্থন করে এবং এটিকে জাম্প বারে তালিকাভুক্ত করে।
সুতরাং কোনও বিবরণ দিয়ে একটি সতর্কতা সেট করার জন্য আপনি এই জাতীয় কিছু ব্যবহার করবেন:
//TODO: Clean up this code after testing
যদি আপনি কেবল একটি সংক্ষিপ্ত চিহ্ন সেট করতে চান (ধরে নিবেন যে আপনাকে কী করতে হবে তা মনে করে), এটি ব্যবহার করুন:
//FIXME
সম্পাদনা: এই ল্যান্ডমার্কগুলি কেবলমাত্র এক্সকোডের জাম্প বারে প্রদর্শিত হবে যা আপনি যা চান তা নাও হতে পারে এবং বিশেষত // টোডো: এবং // ফিক্সমেক চিহ্ন থেকে expect আমি এটিতে একটি রাডার দায়ের করেছি: # 17776817। আশা করা যায় অ্যাপল এক্সকোড 6 এ আগত বিল্ডগুলিতে এটি যুক্ত করবে।
সমাধান (সম্পাদনা 2):
আপনি যদি হোমব্রিউয়ের মাধ্যমে সুইফট লিন্টারটি ইনস্টল করেন (এ এর brew install swiftlint
পরে চালান brew update
) এবং প্রস্তাবিত বিল্ড স্ক্রিপ্টটি আপনার প্রকল্পে যুক্ত করেন তবে আপনি আপনার সমস্ত TODO
এবং FIXME
ল্যান্ডমার্কগুলি এক্সকোডের মধ্যে সতর্কতা হিসাবে উপস্থিত দেখবেন । এমনকি সুইফটলিন্ট আরও কিছু সতর্কতা / ত্রুটি যুক্ত করবে যা আপনি আপনার প্রয়োজনীয়তার সাথে মানিয়ে নিতে কনফিগার করতে পারেন - আমি কেবল সুইফটলিন্ট ব্যবহারের পরামর্শ দিতে পারি এবং এটি এই সমস্যাটিকে দুর্দান্ত উপায়ে সমাধান করে!
এখনও অ্যাপল দল যোগ করেনি। আমি যা করার সিদ্ধান্ত নিয়েছি তা সম্ভবত প্রতারণা, তবে কমপক্ষে এটি আমাকে একটি FIXME বার্তা দেখায়। সুতরাং আমি যা করব তা হ'ল সুইফ্ট ফাইলে FIXME () ফাংশনটি ঘোষণা করা:
@availability(iOS, deprecated=1.0, message="I'm not deprecated, please ***FIXME**")
func FIXME()
{
}
এবং যখন আমি এটি অন্য কোনও ফাংশন থেকে কল করি তখন এটি একটি সতর্কতা প্রদর্শন করে, যেমন
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
FIXME() // Incomplete method implementation.
return 0
}
সুইফট 2 ব্যবহারের জন্য
@available(iOS, deprecated=1.0, message="I'm not deprecated, please ***FIXME**")
এই নিবন্ধটি দেখুন ।
আপনি নিজের স্ক্রিপ্ট লিখতে পারেন যা সমস্ত ট্যাগকে হাইলাইট করবে।
TAGS="TODO:|FIXME:"
ERRORTAG="ERROR:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$|($ERRORTAG).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/" | perl -p -e "s/($ERRORTAG)/ error: \$1/"
বিকল্প হিসাবে, আপনি যদি সতর্কতা প্যানেলে কিছু দেখাতে চান তবে আপনি এমন কিছু লিখতে পারেন:
if (false){
var x = 2;
}
আপনি প্রকৃতপক্ষে কোনও পাঠ্য প্রদর্শন করতে পারবেন না, তবে কমপক্ষে এটি আরও দৃশ্যমান মার্কার, বিশেষত যদি আপনি (বেশিরভাগ) সতর্কতাগুলিকে ত্রুটির মতো আচরণ করেন।
আমি এই বৈশিষ্ট্যটির প্রস্তাব ও বাস্তবায়ন করেছি এবং এটি সুইফট ৪.২ এর সাথে প্রেরণ করবে। আপনি এখনই swift.orgmaster
এ সরঞ্জামচেনটি ডাউনলোড করে এটি ব্যবহার করতে পারেন ।
#if os(macOS)
#error("macOS is not supported")
#endif
#warning("finish this")
আমি যে একটি কোকোপোড ব্যবহার করছিলাম .swift
তার নাম ছিল, সুতরাং একটি ডিরেক্টরি ফিরে এসেছিল, যার ফলে কাইল স্ক্রিপ্টটি ক্র্যাশ করেছিল। কমান্ডে যুক্ত -type f
করা প্যাটার্নের সাথে মেলে এমন ডিরেক্টরিগুলি ফেরানোর পরিবর্তে find
কেবল মেলে এমন ফাইলগুলি দেখলে সমস্যার সমাধান *.swift
করে।
চূড়ান্ত কোড যা আমি ব্যবহার করেছি:
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.swift" \) -type f -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
আপনি যদি নিজের বিল্ড সেটআপটি সামঞ্জস্য করতে ঘৃণা করেন তবে অন্য একটি সহজ ঘরোয়া প্রতিকার হ'ল মন্তব্যের সামনে সম্পাদক প্লেসোল্ডারকে আটকে রাখা:
<#todo#>// stop and fixme!
আপনি নির্মাণের সময় "উত্স ফাইলের সম্পাদক প্লেসোল্ডার" ত্রুটি পান তবে জর্ডানের সমাধানের বিপরীতে টাইপ করার সময় আপনাকে বিরক্ত করার কোনও লাইভ ত্রুটি নেই:
অনেক অনুসন্ধান এবং আকাঙ্ক্ষার পরেও, আমি নিশ্চিত যে এরকম কোনও সত্ত্বা নেই। আমি এখনও সর্বশেষতম এক্সকোড রিলিজ নোটগুলির সাথে একটি # প্রচলিত চিহ্ন ব্যবস্থার অবিচ্ছিন্ন অভাবের কথা উল্লেখ করে আশাবাদী, # বিশিষ্টতা এবং # ত্রাসও সম্ভবত আসতে পারে।
একটি সরাইয়া হিসাবে, আমি অত্যন্ত এ অ্যাপল সঙ্গে একটি রাডার ফাইলিং সুপারিশ হিসাবে bugreport.apple.com এই কার্যকারিতা যোগ করার জন্য (আপনি 17702491 প্রতারিত করতে পারবেন)।
আমরা একটি কনফিগারযোগ্য সরঞ্জাম লিখেছি যা আপনাকে মন্তব্য ট্যাগের উপর ভিত্তি করে এক্সকোড ইস্যু নেভিগেটরে সতর্কতা ও ত্রুটি স্থাপন করতে এবং কনফিগারেশন তৈরি করতে দেয়: https://github.com/doubleencore/XcodeIssueGenerator
এটি ইনস্টল করুন:
brew tap doubleencore/tap
brew install xcodeissuegenerator
তারপরে রান স্ক্রিপ্ট বিল্ড ফেজে একটি লাইন রাখুন:
# Mark WARNINGs, SERIOUSs, and TODOs as warnings in DEBUG builds excluding the Vendor and Third Party directories.
XcodeIssueGenerator -b DEBUG -w "WARNING, SERIOUS, TODO" -x "Vendor/, Third Party/"
আমরা এটি কীভাবে ব্যবহার করি তার বর্ণনা দেওয়ার জন্য এখানে একটি নিবন্ধ রয়েছে ।
আমি এক্সকোড 10 সমর্থনকারী ত্রুটি এবং সতর্কবার্তা দিয়ে পার্টিতে দেরিতে হতে পারি, তবে কেবল স্ট্রিং রেখেছি:
"Need to finish implementing this"
একটি সতর্কতা তৈরি করবে: String literal is unused
স্বতঃপূরণ এখনও কাজ করে এবং প্রকল্পটি এখনও সংকলন করে।
আমার উত্তরটি আপনার প্রশ্নের পক্ষে পুরোপুরি সন্তুষ্ট নয়, তবে আপনি যদি কিছু সহজ চান তবে আপনি এই প্লাগইন আলকাত্রাজ ব্যবহার করতে পারেন যা কোনও অতিরিক্ত প্রস্তুতি ছাড়াই সমস্ত প্রকল্পে কাজ করে। কেবল নিম্নলিখিতটি করুন:
1) install Alcatraz (Nice package manager for Xcode Plug-ins) by entering this line in terminal:
curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
2) Then restart Xcode and on it launch agree to install all bundles not included in Xcode
3) In Xcode select menu item -> Window -> Package manager -> type in search panel XTodo and press install
4) Relaunch Xcode and again agree to install additional bundles
5) From now press Ctrl + T and you will see all Tags in nice window
এটিতে নতুন ট্যাগ যুক্ত করার জন্য পছন্দগুলিও রয়েছে
এই স্নিপেটের সুবিধা - এটি পডস থেকে সতর্কতা দেখায় না:
if [ "${CONFIGURATION}" = "DEBUG" ]; then
TAGS="TODO:|FIXME:|WARNING:|warning:" find "." \( -name "*.swift" \) -not -path "./Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
fi
কিভাবে ইনস্টল করতে হবে:
//WARNING
ঠিক # প্রগমা যেমন হবে//MARK
তবে বর্তমানে তাদের দুটিই এক্সকোড বিটাতে যুক্ত করা হয়নি।