java - एन्टी के बिना। फाइल्स पर केवल चेकस्टाइल चलाने का कोई तरीका है?




ant checkstyle (2)

मैं कोशिश कर रहा हूं कि चेकस्टाइल को कोई भी फ़ाइल प्रकार दिया गया है, लेकिन जो कुछ भी नहीं है .जाव फ़ाइल नहीं है। मैंने एक फिल्टर बनाया है, लेकिन वह काम नहीं करता है:

public class DotJavaFilter
    extends AutomaticBean
    implements Filter
{

    public DotJavaFilter()
        throws PatternSyntaxException
    {
    }

    public boolean accept(AuditEvent aEvent)
    {
        final String fileName = aEvent.getFileName();
        return fileName.endsWith(".java");
    }
}

मैं सीएस को फाइलों की एक निर्देशिका देना चाहूंगा और इसे केवल .java की प्रक्रिया करनी होगी।


Answers

आप इसे इस तरह से कमांड लाइन पर चला सकते हैं:

java -jar checkstyle-5.5-all.jar -c docs/sun_checks.xml -r /path/to/src

यदि आप bash का उपयोग कर रहे हैं, तो आप globstar को चालू कर सकते हैं और उसके बाद केवल इस तरह की java फ़ाइलें संसाधित कर सकते हैं:

shopt -s globstar
java -jar checkstyle-5.5-all.jar -c docs/sun_checks.xml -r /path/to/src/**/*.java

चेकस्टाइल कमांड लाइन दस्तावेज़ीकरण यहाँ है

अद्यतन: एक दमन फ़िल्टर का उपयोग करना

एक दमन फ़ाइल बनाएं जो क्लास फाइलों पर सभी चेक को अनदेखा करने के लिए। आप अन्य फाइल प्रकारों के लिए regexes जोड़ सकते हैं, जिन्हें आप रूचि नहीं रखते हैं।

suppressions.xml:

<suppressions>
    <suppress checks="." files=".*\.class"/>
</suppressions>

अपनी जांच फ़ाइल में एक दमन फ़िल्टर जोड़ें:

my_checks.xml:

<module name="SuppressionFilter">
    <property name="file" value="suppressions.xml"/>
</module>

चलाओ:

java -jar checkstyle-5.5-all.jar -c my_checks.xml -r /path/to/src

दमन फ़िल्टर पर दस्तावेज यहां पाये जा सकते हैं


जावा 8 में यह आसान है। दो कीवर्ड हैं

  1. धारा: Arrays.stream(intArray).forEach
  2. विधि संदर्भ: ::println

    int[] intArray = new int[] {1, 2, 3, 4, 5};
    Arrays.stream(intArray).forEach(System.out::println);
    

यदि आप एक ही पंक्ति में सरणी में सभी तत्वों को मुद्रित करना चाहते हैं, तो केवल println यानी के बजाय print उपयोग करें

int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);

विधि संदर्भ के बिना एक और तरीका बस उपयोग करें:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));






java ant checkstyle