একক লাইনে সর্বোচ্চ সংখ্যক PEP8 লঙ্ঘন


17

আপনার কাজটি এমন একটি ফাইল লিখতে হয় যাতে অনেকগুলি পিপ 8 লঙ্ঘনের সাথে একটি লাইন থাকে ।

নিয়ম:

  • আমরা pep8 সংস্করণ 1.5.7 এবং ডিফল্ট সেটিংস ব্যবহার করি।
  • অন্যান্য কমান্ড লাইন বিকল্পের সাথে বা কাস্টম আরসি ফাইল ব্যবহারের সাথে পেপ 8 কল করার অনুমতি নেই।
  • সর্বাধিক লাইনের দৈর্ঘ্য 120 অক্ষর। আপনি অবশ্যই E501 লঙ্ঘন করতে পারেন, তবে আপনার স্কোরটি যে রেখায় গণনা করা হয়েছে সেটি <= 120 অক্ষর হতে হবে।
  • আপনার মডিউলটির আগে বা পরে অন্যান্য লাইন থাকতে পারে তবে কেবল একটি লাইন আপনার স্কোরকে অবদান রাখবে।
  • আপনার ফাইলটিতে সিনট্যাক্সেরফারস বা কোনও ধরণের আবর্জনা থাকতে পারে, এটি আমদানি বা চালানোর দরকার নেই।

স্কোরিংয়ের উদাহরণ:

নিম্নলিখিত মডিউলটির thing.pyস্কোর 2 রয়েছে, কারণ এতে 2 টি পিপ 8 লঙ্ঘন সহ একটি লাইন (লাইন 1) রয়েছে।

 spam='potato'

স্কোর পরীক্ষা করতে:

~$ mktmpenv 
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pip install pep8==1.5.7
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ echo -n "spam='potato'" > thing.py
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pep8 thing.py 
thing.py:1:5: E225 missing whitespace around operator
thing.py:1:14: W292 no newline at end of file

2
এটি কি ... ভাষা-নির্দিষ্ট চ্যালেঞ্জ? কারণ আমরা আসলে এগুলি পছন্দ করি না।
জন ডিভোরাক

আমি অনুমান করি এটি সত্যই ভাষা নির্দিষ্ট নয় (কারণ ফাইলটিতে কোনও আবর্জনা থাকতে পারে) তবে স্পষ্টতই পাইথন কোডিংয়ের সাথে পরিচিত লোকদের কিছুটা সুবিধা হবে
উইম

উত্তর:


11

241

আপনি যদি সর্বাধিক ত্রুটি চান তবে কেবল সেমিকোলন দিয়ে উন্মাদ হন

$ cat test.py
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$ cat test.py | wc -m
120

$ pep8 test.py | wc -l
241

বেশিরভাগ ত্রুটি হ'ল:

test.py:1:119: E231 missing whitespace after ';'
test.py:1:119: E702 multiple statements on one line (semicolon)

শেষে ত্রুটিযুক্ত:

test.py:1:120: E703 statement ends with a semicolon
test.py:1:121: W292 no newline at end of file

@ উইম আপনার পোস্টের জবাব দিতে পারেনি তাই আমি এটি এখানে রেখেছি। আপনি সুবিধার
কথাটি ঠিকই বলেছিলেন

আমি মনে করি আপনি একটি সেমিকোলন সংক্ষিপ্ত। ডাব্লুসিটি পেছনের নিউলাইনটিকে গণনা করে তবে আমরা এই সাইটে চরিত্রের জন্য গণনা করি না। আপনি আপনার কোডের উদ্ধৃতিতে দেখতে পাচ্ছেন, আপনার শেষ অক্ষরটি # 119। আপনার প্রতিটি সেমিকোলনের জন্য শেষ একটি ব্যতীত 240, 2 অত্যধিক দীর্ঘ লাইনের জন্য 1 এবং একটি সেমিকোলন দিয়ে শেষের জন্য 1 পেতে হবে।
isaacg

@ আইস্যাক অহ, আপনি ঠিক বলেছেন, আমি ভেবেছিলাম এটা অদ্ভুত ছিল যে এটি চরিত্রের সংখ্যা 2-এর চেয়ে কম ত্রুটি পেয়েছে, আমি অদৃশ্য নিউলাইন যুক্ত করার জন্য
জেডিটকে দোষ দিচ্ছি

হা হা, এক ধরণের সস্তা .. তবে কার্যকর! +1
wim

7

123

হ্যাঁ, চরিত্রের চেয়ে বেশি লঙ্ঘন!

$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | cat
 (  =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | wc -m
 120
$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | pep8 - | wc -l
 123

কৌশলটি হ'ল =একটি (পিপ করার পরে আপনি মনে করেন যে আপনি কোনও ফাংশন কলটিতে কীওয়ার্ড করছেন (উদাঃ foo(bar=12))। এই প্রসঙ্গে, [TAB]=উভয়ই ট্রিগার করে

killpep.py:1:3: E223 tab before operator
killpep.py:1:3: E251 unexpected spaces around keyword / parameter equals

এবং =[TAB]উভয় ট্রিগার করা

killpep.py:1:5: E224 tab after operator
killpep.py:1:5: E251 unexpected spaces around keyword / parameter equals

আনন্দের সাথে যথেষ্ট, আপনি কেবল এগুলি চেইন করতে পারেন।

এটি প্রতিটি চরিত্রের জন্য লঙ্ঘনের গণনা দেয়। আমার (এটি সেট আপ করা দরকার, তবে )আমাদের প্রদান করে না :

killpep.py:2:1: E901 TokenError: EOF in multi-line statement

এটি 120. কোনও নিউলাইন নয় = 121. এটি "লাইন খুব দীর্ঘ" ত্রুটিটি ট্রিগার করতে সক্ষম হয়েছে, সুতরাং এটি 122 Finally শেষ অবধি, একটি অক্ষর ব্যবহার করে একটি স্পেস দিয়ে শুরু করতে হবে (ধন্যবাদ এরিক_লাগারগ্রেন ) 1 এর পরিবর্তে 2 লঙ্ঘন দেয়:

killpep.py:1:2: E111 indentation is not a multiple of four
killpep.py:1:2: E113 unexpected indentation

জিত!


একটি শীর্ষস্থানীয় হোয়াইটস্পেস যুক্ত করুন এবং শেষটি সরিয়ে ফেলুন zএবং আপনি 103 দিয়ে শেষ করবেন ... তবে আমি যখনই এই কোডটি অনুলিপি করব তখন আমি 102 এর পরিবর্তে 83 পেয়ে যাব I
এরিক লেগারগ্রেন

@ এরিক_লাগারগ্রেন: আমি স্পেসগুলির পরিবর্তে ট্যাব ব্যবহার করছি এবং আমার ধারণা তারা সঠিকভাবে অনুলিপি করছে না। এটা পেস্টবিন করে দেবে বলে আমার ধারণা!
ক্লাদিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.