পিএইচপি তে স্থির কোড বিশ্লেষণ কিভাবে করবেন? [বন্ধ]


465

পিএইচপি উত্স ফাইলগুলির জন্য কোনও স্থির বিশ্লেষণ সরঞ্জাম আছে? বাইনারি নিজেই সিনট্যাক্স ত্রুটিগুলি পরীক্ষা করতে পারে তবে আমি এমন কিছু সন্ধান করছি যা আরও কিছু করে, যেমন:

  • অব্যবহৃত ভেরিয়েবল অ্যাসাইনমেন্ট
  • প্রথমে সূচনা না করে নির্ধারিত অ্যারেগুলি
  • এবং সম্ভবত কোড শৈলীর সতর্কতা
  • ...

57
রাইটি-ও: এসও দ্বারা বন্ধ, যখন পরিষ্কারভাবে এই ধরণের উত্তর অবিশ্বাস্যভাবে কার্যকর।
ইরা

3
সম্মত হন। এই প্রশ্নটি গুরুত্বপূর্ণ। পিএইচপি লিন্ট (পিএইচপি-এল ফাইল) অন্য অর্ধেক সরবরাহ করতে ব্যর্থ: অটোল্যাড চালান, নিশ্চিত হন যে কোনও ফাংশন উপস্থিত রয়েছে, ভেরিয়েবল বিদ্যমান, বস্তুর বৈশিষ্ট্য বিদ্যমান। ইত্যাদি
সর্বাধিক

6
@ ইরাক্যাক্সার দরকারী, তবে বিষয়টিতে কঠোরভাবে বলছেন না। softwarerecs.stackexchange.com সম্ভবত আরও একটি অনন্য বিষয়ের অবস্থান। অবশ্যই এখানে বিদ্রূপটি হ'ল আরও অনেক বিকাশকারী তার ভাইবোনদের চেয়ে এসও এর সাথে পরিচিত ...
ওয়েন ওয়ার্নার

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

4
ট্রিগার-হ্যাপি ক্লোজারগুলির কারণে বন্ধ রয়েছে। বাঃ!
রোডওল

উত্তর:


356

এক্সিকিউশন ছাড়াই সিনট্যাক্স যাচাই করতে কমান্ড লাইন থেকে পিএইচপি-কে লিঙ্ক-মোডে চালান:

php -l FILENAME

উচ্চ-স্তরের স্থির বিশ্লেষকগুলির মধ্যে রয়েছে:

নিম্ন-স্তরের বিশ্লেষকগুলির মধ্যে রয়েছে:

রানটাইম বিশ্লেষক, যা পিএইচপি গতিশীল প্রকৃতির কারণে কিছু জিনিসের জন্য আরও কার্যকর include

ডকুমেন্টেশন লাইব্রেরি পিএইচপিডোক এবং ডক্সিজেন এক ধরণের কোড বিশ্লেষণ করে। উদাহরণস্বরূপ, অক্সিজেন গ্রাফভিজের সাথে উত্তম উত্তরাধিকারের গ্রাফগুলি সরবরাহ করতে কনফিগার করা যেতে পারে ।

আর একটি বিকল্প হ'ল এক্সএইচআরফফ , যা এক্সডিবাগের মতো, তবে হালকা, এটি উত্পাদন সার্ভারের জন্য উপযুক্ত করে তোলে। সরঞ্জামটির মধ্যে একটি পিএইচপি-ভিত্তিক ইন্টারফেস রয়েছে।


20
এই সমস্ত গুডির চেষ্টা করে আমার জীবনের 6 ঘন্টা সময় নেওয়ার জন্য +1!
আবে পেট্রিলো

14
@ ডিমিটকো: কারণ এটি একবারে php -lকেবল একটি ইনপুট ফাইল পড়তে পারে (এটি যদি আপনি করেন তবে এটি কাজ করবে না php -l file1.php file2.php)। পরিবর্তে আপনাকে -n 1বিকল্পটি ব্যবহার করতে হবে যা xargsকমান্ড প্রক্রিয়া অনুযায়ী কেবল একটি ইনপুট লাইন ব্যবহার করতে বলে । এর পরিবর্তে এটি পৃথকভাবে php -l file1.phpঅনুসরণ করে চালিত করবে php -l file2.php। একই সময়ে, আপনি একই -P <n>সাথে "এন" প্রসেসগুলি চালানোর জন্য, একই সাথে মৃত্যুদণ্ড কার্যকর করতে পারেন:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
জো

11
find /your/path -name '*.php' -exec php -l {} \;নির্ভরযোগ্য কাজ করে।
কোয়েন

11
বিশেষ দ্রষ্টব্য : জন্য বিল্ট ইন তিসি ফাংশন ( php -lকাজ), আপনি সেট করতে হবে display_errors = onযে php.ini, অন্যথায় আপনি শুধুমাত্র হচ্ছে সিনট্যাক্স ত্রুটি প্রায় একটি জেনেরিক বার্তা কিন্তু কি ত্রুটি (গুলি) বা কি লাইন (গুলি) সম্পর্কে কোন বিবরণ পেতে হবে।
সিনেটেক

8
সিনেটেক - ভাল। আপনি -dস্যুইচটি ব্যবহার করে কমান্ড লাইনের সেটিংসটি ওভাররাইড করতে পারেন। উদাহরণস্বরূপphp -l -d display_errors=on $FILENAME
ট্রোলসकन

38

অনলাইন পিএইচপি লিন্ট

PHPLint

ইউনিটিয়ালাইজড ভেরিয়েবল চেক । যদিও লিংক 1 এবং 2 ইতিমধ্যে এটি ঠিক আছে বলে মনে হচ্ছে।

আমি বলতে পারি না যে আমি এর কোনওটি নিবিড়ভাবে ব্যবহার করেছি, যদিও :)


তার উত্তর আমার আজকের দিনটি দুর্দান্ত করে তুলেছে! +1
গিলহার্ম ন্যাসিমেণ্টো


24

পিএইচপি মেস ডিটেক্টর দুর্দান্ত এবং দ্রুত।


7
ধন্যবাদ! আমি একটি দুর্দান্ত দেখতে পেয়েছিলাম আসলে, আমি দুর্দান্ত সরঞ্জামগুলি ছাড়া আর কিছু ব্যবহার করতে অস্বীকার করি। :)
অধ্যাপক ফ্যালকেন চুক্তি

1
এটি একটি শুরু, এবং এটি নেটবিনগুলি যা ব্যবহার করে তা মনে হয় তবে আমি এটির উপর পুরোপুরি বিশ্বাস করব না। এর কয়েকটি বিকল্প হ'ল সরল বিজোড় (যদি আপনি অন্য কোনও বিবৃতি ব্যবহার করেন তবে আপনাকে "" সতর্কবাণী "), এবং এর সনাক্তকরণে অনেকগুলি বড় বাগ রয়েছে, যার বিকাশকারীদের কাছ থেকে কোনও প্রতিক্রিয়াও পাওয়া যায়নি
নোবগস

অন্যথায় সাইক্লোমেটিক জটিলতা যুক্ত হয় এবং এড়ানোর জন্য প্রায়শই ভিন্নভাবে লেখা যেতে পারে এবং অন্যথায়। যেমন যদি (সত্য) {$ x = 1; } অন্য {$ x = 2; re আবার লেখা যেতে পারে: $ x = 2; যদি (সত্য) {$ x = 1; }
রিচার্ডএটহোম

17

আমি $ php -l এবং দম্পতি অন্যান্য সরঞ্জাম ব্যবহার করার চেষ্টা করেছি। তবে আমার অভিজ্ঞতার মধ্যে সেরাটি ( ওয়াইএমএমভি, অবশ্যই) পিএফএফ টুলসেটের স্ক্যাক । আমি কোফায় পিএফএফ সম্পর্কে শুনেছি ( http://www.quora.com/Is-there-a-good-PHP-lint-static- analysis-tool )

আপনি এটি সংকলন এবং ইনস্টল করতে পারেন। কোনও দুর্দান্ত প্যাকেজ নেই (আমার পুদিনা দেবিয়ানে, আমাকে প্রথমে libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev এবং libgimp2.0-dev depend dependance ইনস্টল করতে হবে) তবে এটি একটি ইনসসেলের মূল্য হওয়া উচিত।

ফলাফল যেমন রিপোর্ট করা হয়

rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.

ধন্যবাদ. এটি আমাদের গতিশীল আমদানি সম্পর্কে অভিযোগ রাখে, তবে এর অন্যান্য ক্ষমতা এখন পর্যন্ত ভাল দেখাচ্ছে look আমার কাছে বাইনুটিস-সোনার ইনস্টল করার দরকার ছিল এবং কাস্টম পথে ইনস্টল করার জন্য স্ক্যাক দরকার ছিল, তবে এখন এটি কাজ করছে বলে মনে হচ্ছে।
Eslpd

1
@ ইশাল্ড আজকাল আমি পিএইচপি মেস ডিটেক্টর (পিএইচপিএমডি) রূপান্তরকারী। আমি এখনও অবধি চেষ্টা করেছি এমন সমস্ত সরঞ্জামগুলির মধ্যে (পিএইচপি কোড স্নিফার, স্ক্যাক, পিএইচপি-এল, পিএইচপিডি), আইএমএইচও, পিএইচপিডি আমার ক্ষেত্রে সবচেয়ে ভাল কাজ করে।
rjha94

আপনি জানেন কোথায় শেক খুঁজে পাবেন?
জর্জ ক্যাটসানোস

1
@ জর্জক্যাটসানোস স্ক্যাক পিএফএফ টুলসেটের অংশ। github.com/facebook/pfff
rjha94

2
স্কেক আমাকে সর্বদা ত্রুটি দেয় "পিএইচপি চেকারের একটি গ্রাফ ফাইলের প্রয়োজন"। বেশিরভাগ অস্তিত্বহীন ডকুমেন্টেশনের কোনও উদাহরণ নেই।
রবার্ট ব্রুস

14

দেখুন শব্দার্থিক ডিজাইন 'CloneDR , একটি "ক্লোন সনাক্তকরণ" সরঞ্জাম যা খুঁজে বের করে কপি / পেস্ট / সম্পাদিত কোড। এটি খালি স্থান, মন্তব্য এবং এমনকি পরিবর্তনশীল নাম পরিবর্তন করেও সঠিক এবং কাছাকাছি মিস কোড টুকরো খুঁজে পেতে পারে। পিএইচপি-র জন্য নমুনা সনাক্তকরণের প্রতিবেদনটি ওয়েসাইটে পাওয়া যাবে। (আমি লেখক)


1
সাইটটির দিকে তাকিয়ে দেখে মনে হচ্ছে এটি অবিশ্বাস্য সরঞ্জামের মতো। আমি পরে আরও ঘুরে দেখব! লিঙ্কটির জন্য ধন্যবাদ ("আমি লেখক" এর জন্যও +1)
এরিক কপ

যে কোনও সংযোগকারী আন্ডারগ্রাডের বেন।
wom

7

নেটবিয়ান আইডিই সিনট্যাক্স ত্রুটি, অব্যবহৃত ভেরিয়েবল এবং এর জন্য পরীক্ষা করে। এটি স্বয়ংক্রিয় নয়, ছোট বা মাঝারি প্রকল্পগুলির জন্য সূক্ষ্ম কাজ করে।


6

পিএইচপি জন্য nWire নামে একটি নতুন সরঞ্জাম আছে । এটি এক্সিলিপস পিডিটি এবং জেন্ড স্টুডিও 7.x এর জন্য একটি কোড এক্সপ্লোরেশন প্লাগইন is এটি পিএইচপি-র জন্য রিয়েল-টাইম কোড বিশ্লেষণ সক্ষম করে এবং নিম্নলিখিত সরঞ্জামগুলি সরবরাহ করে:

  • কোড ভিজ্যুয়ালাইজেশন - উপাদান এবং সমিতিগুলির ইন্টারেক্টিভ গ্রাফিকাল উপস্থাপনা।
  • কোড নেভিগেশন - অনন্য নেভিগেশন ভিউ সমস্ত সংযুক্তি দেখায় এবং আপনি কোড লিখতে বা পড়ার সময় আপনার সাথে কাজ করে।
  • দ্রুত অনুসন্ধান - পদ্ধতি, ক্ষেত্র, ফাইল ইত্যাদির জন্য টাইপ করার সাথে সাথে অনুসন্ধান করুন

1
এটি প্রশ্নের উত্তর না। যেমন উত্তর নেটবিন ইত্যাদির উপস্থিতি রয়েছে ..
ইউসুফ

5

পিএইচপি পিএমডি (প্রজেক্ট মেস ডিটেক্টর) এবং পিএইচপি ইউএনটির পূর্ববর্তী অংশ হিসাবে পিএইচপি সিপিডি (কপি পেস্ট সনাক্তকারী)


4

নেই পিএইচপি স্ক্রিপ্ট দুর্বলতা জন্য একটি স্ট্যাটিক সোর্স কোড বিশ্লেষক - rips । Rips উত্স পাওয়া সোর্সফোর্জ

রিপস সাইট থেকে:

স্থির কোড বিশ্লেষণ ব্যবহার করে পিএইচপি অ্যাপ্লিকেশনগুলিতে দুর্বলতাগুলি খুঁজে পেতে পিএইচপি-তে রাইপস লেখা একটি সরঞ্জাম। সমস্ত উত্স কোড ফাইলগুলি টোকেনাইজ করে এবং পার্স করার মাধ্যমে আরআইপিএস পিএইচপি উত্স কোডটিকে একটি প্রোগ্রামের মডেলে রূপান্তর করতে এবং সংবেদনশীল সিঙ্কগুলি সনাক্ত করতে সক্ষম করে (সম্ভাব্যভাবে দুর্বল ফাংশন) যা প্রোগ্রামিং প্রবাহের সময় ইউজারিনপুট (দূষিত ব্যবহারকারী দ্বারা প্রভাবিত) দ্বারা কলঙ্কিত হতে পারে। প্রাপ্ত দুর্বলতার কাঠামোগত আউটপুট ছাড়াও আরআইপিএস আরও ম্যানুয়াল বিশ্লেষণের জন্য একটি সংহত কোড অডিট কাঠামো সরবরাহ করে।


আরআইপিএস একটি অর্ধ-মৃত প্রকল্প এবং এটি কেবল অ-ওওপি পিএইচপি-কোড নিয়ে কাজ করে।
অলেগস্লু

3

স্থির কোড বিশ্লেষণের জন্য একেবারে নতুন সরঞ্জাম রয়েছে যাকে পিএইচপি অ্যানালাইজার বলে

অনেক ধরণের স্থির বিশ্লেষণের মধ্যে এটি বেসিক অটো-ফিক্সিং কার্যকারিতাও সরবরাহ করে, ডকুমেন্টেশন দেখুন

আপডেট: পিএইচপি-অ্যানালাইজার এখন প্রত্যাশিত প্রকল্প তবে আপনি এখনও এটি উত্তরাধিকার শাখায় অ্যাক্সেস করতে পারবেন


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