2014-04-16 24 views
11

Tôi muốn biết nếu có cách nào để chạy tất cả các quy tắc PMD từ dòng lệnh.Chạy tất cả các quy tắc PMD từ dòng lệnh

Tôi đã sử dụng PMD được tích hợp với IDE Eclipse và Maven. Nhưng bây giờ tôi cần phải chạy nó từ CLI. Tôi đã kiểm tra trang này http://pmd.sourceforge.net/pmd-5.1.0/running.html và nó nói bạn có thể chạy nó từ CLI, nhưng với rulesets đã chỉ định:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/unusedcode.xml 

Trong ví dụ này, bạn chỉ nhận được kết quả cho Java không sử dụng đang quy tắc và tôi đang cố gắng để đạt được điều gì đó như:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/*.xml 

và nhận kết quả cho tất cả các quy tắc trong quy tắc Java.

Trả lời

7

Bạn có thể xác định tệp cấu hình bao gồm các quy tắc bạn muốn chạy. Bạn có thể cung cấp tệp này làm tham số sau đối số -R trên dòng lệnh.

Hồ ví dụ là ở đây (MyRules.xml):

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<ruleset name="PMD.rul" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd"> 

    <description>This ruleset was created from PMD.rul</description> 

    <rule ref="rulesets/java/basic.xml"> 
    <exclude name="UnnecessaryFinalModifier"/> 
    </rule> 

    <rule ref="rulesets/java/braces.xml"/> 
    <rule ref="rulesets/java/clone.xml"/> 
    <rule ref="rulesets/java/comments.xml"/> 

    <rule ref="rulesets/java/controversial.xml"> 
    <exclude name="AtLeastOneConstructor"/> 
    <exclude name="UnnecessaryParentheses"/> 
    </rule> 

    <rule ref="rulesets/java/design.xml"> 
    <exclude name="GodClass"/> 
    </rule> 

    <rule ref="rulesets/java/empty.xml"/> 
    <rule ref="rulesets/java/finalizers.xml"/> 
    <rule ref="rulesets/java/imports.xml"/> 
    <rule ref="rulesets/java/j2ee.xml"/> 
    <rule ref="rulesets/java/javabeans.xml"/> 
    <rule ref="rulesets/java/junit.xml"/> 
    <rule ref="rulesets/java/logging-jakarta-commons.xml"/> 
    <rule ref="rulesets/java/logging-java.xml"/> 
    <rule ref="rulesets/java/naming.xml"/> 
    <rule ref="rulesets/java/optimizations.xml"/> 
    <rule ref="rulesets/java/strictexception.xml"/> 
    <rule ref="rulesets/java/strings.xml"/> 
    <rule ref="rulesets/java/sunsecure.xml"/> 
    <rule ref="rulesets/java/typeresolution.xml"/> 

    <rule ref="rulesets/java/unnecessary.xml"> 
    <exclude name="UnnecessaryFinalModifier"/> 
    <exclude name="UnnecessaryReturn"/> 
    <exclude name="UselessParentheses"/> 
    </rule> 

    <rule ref="rulesets/java/unusedcode.xml"/> 

</ruleset> 

Lệnh đối số dòng sẽ trông như thế này:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R MyRules.xml 
+13

Tôi chấp nhận câu trả lời của bạn, bởi vì là một giải pháp hợp lệ. Nhưng tôi đã tìm cách làm điều này chỉ bằng cách sử dụng các tệp PMD. Chỉ cần chạy "rulesets/internal/all-java.xml" – Angelo

+0

Để có danh sách cập nhật tất cả các quy tắc java, hãy xem thư mục chứa tất cả các rulesets java trong kho lưu trữ mã nguồn - [pmd/pmd/pmd-java/src/main/resources/rulesets/java] (https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java). – mucaho

+0

Ngoài ra, để có danh sách thuận tiện của tất cả các quy tắc java, hãy xem tệp tương ứng [pmd/pmd/pmd-core/src/main/resources/rulesets/nội bộ/tất cả-java.xml] (https://github.com/ pmd/pmd/blob/master/pmd-core/src/main/resources/rulesets/nội bộ/tất cả-java.xml). – mucaho

Các vấn đề liên quan