2012-09-06 6 views
5

मैं जेनकिन्स (हडसन) सीआई का उपयोग कर रहा हूं, और प्रतिदिन रिपोर्ट करने के लिए कई टूल का उपयोग करके कोड का विश्लेषण कर रहा हूं, जिसमें चेकस्टाइल रिपोर्ट के लिए कोड्सनिफर शामिल है। मैं ./framework/* निर्देशिका को अनदेखा नहीं करना चाहता, लेकिन यह --ignore पैरामीटर के साथ मेरे प्रयासों के बावजूद इसे शामिल करने पर जोर देता है।CodeSniffer क्यों --ignore निर्दिष्ट फ़ोल्डरों को छोड़कर नहीं हैं?

रिपोर्ट तैयार की गई है और सफलतापूर्वक पार्स किया गया है, लेकिन ढांचे में पियर कोडिंग मानकों की अत्यधिक मात्रा में उल्लंघन के कारण वास्तव में हमारे लिए इसका कोई उपयोग नहीं है।

Codesniffer इस तरह मेरी चींटी निर्माण स्क्रिप्ट से कहा जाता है:

<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> 
<exec executable="phpcs" dir="${basedir}" output="${basedir}/build/logs/checkstyle.xml" failonerror="off"> 
    <arg line="--report=checkstyle --standard=${basedir}/build/phpcs.xml --extensions=php --ignore=*/framework/* ${basedir}" /> 
</exec> 
</target> 

मैं --ignore=framework की कोशिश की है, --ignore=framework/, और इसके बाद के संस्करण पंक्ति में एक, सभी उदाहरणों से मैं वेब के आसपास मिल गया है।

मैंने प्रत्येक तर्क (using < arg value"..." />) के लिए एक अलग पंक्ति का उपयोग करने का भी प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ है।

कोई विचार? बहुत सराहना की :)

संपादित करें: --ignore तर्क है:

--ignore=${basedir}/framework/ 

... और फिर भी, ढांचे फ़ोल्डर शामिल किया जा रहा है। क्या किसी के पास एक - phignCodeSniffer कॉन्फ़िगरेशन है, एक --ignore तर्क के साथ, काम कर रहा है? के बाद से खोल उन्हें विस्तार होगा

पार उंगलियों यहाँ

उत्तर

3

* का उपयोग करते हुए काम नहीं करेगा।

आपके संस्करण php_codesniffer के आधार पर आपको अनदेखा करने के लिए निर्देशिका (या पुराने संस्करण), या निर्माण निर्देशिका से संबंधित पथ को अनदेखा करने के लिए निर्देशिका के पूर्ण पथ को पास करना होगा (php_codesniffer संस्करण 1.3.6 से): Changelog से

अंश:

  • पर ध्यान न दें पैटर्न अब dir के आधार पर एक फ़ाइल के रिश्तेदार पथ की जांच
01 जाँच की जा रही
+0

धन्यवाद, मैं यह कोशिश करता हूँ अभी – Julian

+0

No गो:/वर्तमान आर्ग लाइन है: <आर्ग लाइन = "- रिपोर्ट = checkstyle --standard = $ {basedir} /build/phpcs.xml --extensions = php --ignore = $ {basedir}/ढांचे/$ {आधारित}} /> – Julian

6

मुझे जेनकींस में एक ही समस्या थी और उपर्युक्त उत्तर ने मुझे कुछ हद तक मदद की। मेरे पास अब यही है (और मेरे सिस्टम पर काम करता है)।

आपके सिस्टम इस तरह दिखाई देता है:

/ 
/build.xml 
/foo 
/foo/bar 

यह है कि मैं क्या

<target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing."> 
<exec executable="phpcs"> 
    <arg value="--standard=${basedir}/build/phpcs.xml" /> 
    <arg value="--ignore=foo/bar" /> 
    <arg path="${basedir}" /> 
</exec> 

चाल $ {basedir} और उपयोग करने के लिए नहीं किया गया था मेरी build.xml में है निर्देशिका के पीछे की स्लैश खोने के लिए।

मुझे उम्मीद है कि यह

1

इनपुट के लिए धन्यवाद।मैंने इसे

<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> 
    <exec executable="phpcs" failonerror="off"> 
     <arg line="-v --report-checkstyle=${basedir}/build/logs/checkstyle.xml --standard=${basedir}/build/phpcs.xml --extensions=php --ignore=extensions,library ./protected" /> 
    </exec> 
    </target> 

काम करने की तरह इसे हल कर दिया!

4

इन बहिष्करणों को build/phpcs.xml में रखना भी संभव है। जेनकींस में ठीक काम करना

जेएस/फेसबुक डीआईआर, जेएस/jquery * के लिए वाइल्डकार्ड मैच और एक निर्दिष्ट फ़ाइल नाम में सभी फ़ाइलों को छोड़ने के उदाहरण।

<exclude-pattern>lib/facebook</exclude-pattern> 
<exclude-pattern>js/jquery*</exclude-pattern> 
<exclude-pattern>lib/Postmark.php</exclude-pattern> 
संबंधित मुद्दे