2012-11-12 14 views
6

हाल ही में हम अपने केंद्रीय सर्वर पर डेवलपर्स को रिपोर्ट भेजने के लिए गिट और माइग्रेट करने के लिए माइग्रेट किए गए हैं, साथ ही साथ कई टूल बनाने के लिए हमें हमारे विकास वातावरण पर phpcs के साथ स्वचालित रूप से हमारे कोडर्ड मानक की जांच करने में सक्षम बनाता है।यदि मैं प्रति फ़ाइल प्रयुक्त phpcs नियमसेट को ओवरराइड कर सकता हूं, तो कैसे?

यह सब अच्छा और बेवकूफ है, अच्छी तरह से काम करता है, लेकिन हम हमेशा हमारे कोड मानक पर निर्भर रहने में सक्षम होना चाहते हैं, प्रत्येक फ़ाइल को अनदेखा नहीं करते जो तार्किक कारण के अनुरूप नहीं है। अब, हमारे पास अपना खुद का नियम है जो डिफ़ॉल्ट पीयर मानक में कुछ सामान ओवरराइड करता है, लेकिन यदि संभव हो तो हम थोड़ा और आगे जाना चाहते हैं।

हमारी समस्या यह है कि पीयर मानक सभी वर्गों/व्यावसायिक तर्कों के लिए बिल्कुल सही है, लेकिन दृश्य फ़ाइलों में हम कहने के नियमों को ढीला करना चाहते हैं, ब्रैकेट को अपनी लाइन पर होने की आवश्यकता है। समस्या यह है कि हम ज्यादातर इन फ़ाइलों में एचटीएमएल को परिभाषित करते हैं और हमारे पास केवल एक ही नियंत्रण संरचनाएं सरल होती हैं- अन्यथा या फोरैच स्टेटमेंट्स, और PHP खोलना, फिर एक नई लाइन, समापन ब्रैकेट, न्यूलाइन और क्लोजिंग php जोड़ना थोड़ा मूर्खतापूर्ण इमो है।

आवश्यक वाक्य रचना मान्य होने के लिए:

<?php 
} 
// end of some if statement ?> 

क्या हम बजाय विचारों के लिए उपयोग करना चाहते हैं:

<?php } // end of some if statement ?> 

यह हमारे कोड अधिक पठनीय होगा ...

हम स्वागत के रूप में वैकल्पिक वाक्यविन्यास को नापसंद करें (if(..): ... endif;), afaik मुख्य रूप से क्योंकि यहां वैधता में कुछ समस्याएं भी थीं (यह सब व्हाईट स्पेस के बारे में है ...)।

पूरी फ़ाइल को अनदेखा करना (// @codingStandardsIgnoreFile के साथ) हमारे लिए एक विकल्प नहीं है।

tl; डॉ

तो हम इसलिए हम अभी भी पालन करने के लिए एक मानक है हमारे विचार फ़ाइलों के लिए एक अलग नियम-सेट को परिभाषित किया गया है करना चाहते हैं क्या करने के लिए, लेकिन इन मोर्चों पर आराम के नियमों के साथ इसलिए हमारे कोड कर सकते हैं अभी भी पठनीय बनाया जा सकता है।

मैं अभी तक phpcs के बारे में भी जानकार नहीं हूँ, और किसी भी समाधान अपने आप कीवर्ड मैं हालांकि तार्किक थे का उपयोग कर नहीं मिला ... कोई सुझाव साफ फ़ाइलें देखें कि भी नाशपाती के अनुरूप भी स्वागत कर रहे हैं बनाने के लिए ...

उत्तर

6

यदि यह कुछ फ़ाइलों से बाहर निकलना है, तो आप कुछ फ़ाइलों से बाहर निकलना चाहते हैं, तो आप इन बहिष्करणों को सीधे अपने नियमेट.एक्सएमएल फ़ाइल में डाल सकते हैं। उदाहरण के लिए:

<!-- 
    You can also be more specific and just exclude some messages. 
    Please note that all message-specific ignore patterns are 
    checked using absolute paths. 

    The code here will just hide the ContainsVar error generated by the 
    Squiz DoubleQuoteUsage sniff for files that match either of the two 
    exclude patterns. 
--> 
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> 
    <exclude-pattern>*/tests/*</exclude-pattern> 
    <exclude-pattern>*/data/*</exclude-pattern> 
</rule> 

मुझे यकीन है कि जहां आपके विचार फ़ाइलें जमा हो जाती है नहीं कर रहा हूँ, लेकिन अगर आप उन्हें एक को बाहर पैटर्न (मूल रूप से सिर्फ एक नियमित अभिव्यक्ति) का उपयोग कर मिलान कर सकते हैं तो आप में से कुछ आराम करने के लिए सक्षम हो जाएगा उन पर नियम।

यह पता लगाने का सबसे अच्छा तरीका है कि ref = "" बिट आपकी दृश्य फ़ाइलों पर phpcs चला रहा है और -s कमांड लाइन तर्क का उपयोग कर रहा है। प्रत्येक संदेश के लिए, आपको एक अनूठा कोड मिलेगा, जिसका उपयोग आप अपने नियमपत्र में विशिष्ट बहिष्कार-पैटर्न जोड़ने के लिए कर सकते हैं।

नियमों की फाइलों में आप अन्य चीजों का भी एक समूह कर सकते हैं। Check out the docs here.

+0

उल्लेख करना भूल गए: सुनिश्चित करें कि आप PHP_CodeSniffer संस्करण 1.4.2 (नवीनतम स्थिर संस्करण) का उपयोग कर रहे हैं क्योंकि संस्करण 1.4.1 में नियम बग को बाहर रखा गया था। –

+0

धन्यवाद, यह मूल रूप से मैं जो खोज रहा था वह था। मैंने व्यू फाइलों का स्थान जानबूझकर अस्पष्ट रखा क्योंकि वे विभिन्न प्रकार की परियोजनाओं के लिए अलग-अलग स्थानों पर हैं। हम इसे समझ सकते हैं :) – sg3s

+0

आह! "-एस" ने मुझे स्निफ के माध्यम से बहुत सारी चीजें बचाईं। धन्यवाद :) – markdwhite

संबंधित मुद्दे

 संबंधित मुद्दे