מבוא ל- PMD

1. סקירה כללית

במילים פשוטות, PMD הוא מנתח קוד המקור לאיתור פגמי תכנות נפוצים כמו משתנים שאינם בשימוש, חסימות תפיסה ריקות, יצירת אובייקטים מיותרת וכו '.

הוא תומך ב- Java, JavaScript, Salesforce.com Apex, PLSQL, Apache Velocity, XML, XSL.

במאמר זה נתמקד כיצד להשתמש ב- PMD לביצוע ניתוח סטטי בפרויקט Java.

2. תנאים מוקדמים

נתחיל בהגדרת PMD לפרויקט Maven - שימוש והתצורה של ה- תוסף maven-pmd:

 ... org.apache.maven.plugins maven-pmd-plugin 3.7 /rulesets/java/braces.xml /rulesets/java/naming.xml 

תוכל למצוא את הגרסה האחרונה של תוסף maven-pmd פה.

שימו לב כיצד אנו מוסיפים כאן קבוצות כללים בתצורה - אלה נתיב יחסי להגדרת חוקים כבר מספריית הליבה של PMD.

לבסוף, לפני הפעלת הכל, בואו ליצור מחלקת Java פשוטה עם כמה בעיות בולטות - דבר ש- PMD יכול להתחיל לדווח עליו:

מחלקה ציבורית Ct {public int d (int a, int b) {if (b == 0) return Integer.MAX_VALUE; אחרת להחזיר a / b; }} 

3. הפעל PMD

באמצעות תצורת ה- PMD הפשוטה וקוד הדוגמה - בואו ניצור דוח בתיקיית היעד לבנות:

אתר mvn

הדוח שנוצר נקרא pmd.html והוא ממוקם ב יעד / אתר תיקיה:

קבצים com / baeldung / pmd / Cnt.java קו הפרה הימנע משמות מחלקות קצרים כמו Cnt 1–10 הימנע משימוש בשמות קצרים של שיטות 3 הימנע ממשתנים עם שמות קצרים כמו b 3 הימנע ממשתנים עם שמות קצרים כמו a 3 הימנע משימוש אם ... אחרת הצהרות ללא סוגריים מתולתלים 5 הימנע משימוש אם ... אחרת בהצהרות ללא סוגריים מתולתלים 7 

כפי שאתה יכול לראות - אנחנו לא משיגים תוצאות. הדו"ח מציג הפרות ומספרי שורה בקוד ה- Java שלך, על פי PMD.

4. מערכי כללים

תוסף PMD משתמש בחמש קבוצות ברירת מחדל:

  • basic.xml
  • ריק.קסמל
  • import.xml
  • מיותר.קסמל
  • unusedcode.xml

אתה יכול להשתמש בערכות כללים אחרות או ליצור ערכות כללים משלך, ולהגדיר אותן בתוסף:

 ... org.apache.maven.plugins maven-pmd-plugin 3.7 /rulesets/java/braces.xml /rulesets/java/naming.xml /usr/pmd/rulesets/strings.xml //localhost/design.xml 

שימו לב שאנחנו משתמשים בכתובת יחסית, בכתובת מוחלטת או אפילו בכתובת אתר - כערך הערך 'סט הכללים' בתצורה.

אסטרטגיה נקייה להתאמה אישית לאילו כללים להשתמש בפרויקט היא כתוב קובץ סט חוקים מותאם אישית. בקובץ זה, אנו יכולים להגדיר באילו כללים להשתמש, להוסיף כללים מותאמים אישית ולהתאים אישית אילו כללים לכלול / לא לכלול מערכי הכללים הרשמיים.

5. מערך חוקים מותאם אישית

בואו עכשיו בוחרים את הכללים הספציפיים בהם אנו רוצים להשתמש מתוך קבוצות כללים קיימות ב- PMD - ובואו גם להתאים אותם.

ראשית, ניצור חדש ruleset.xml קוֹבֶץ. אנו יכולים, כמובן, להשתמש באחד מקובצי הכללים הקיימים כדוגמה ולהעתיק ולהדביק אותו בקובץ החדש שלנו, למחוק ממנו את כל הכללים הישנים ולשנות את השם והתיאור:

   מערכת הכללים הזו בודקת את הקוד שלי אם יש דברים רעים 

שנית, בואו נוסיף כמה הפניות לכללים:

או הוסף כמה כללים ספציפיים:

אנו יכולים להתאים אישית את המסר ואת העדיפות של הכלל:

 2  

ותוכל גם להתאים אישית את ערך המאפיין של הכלל כך:

שים לב שאתה יכול להתאים אישית כללים שאליהם מופנית. ניתן לבטל הכל מלבד מעמד הכלל בקבוצת הכללים המותאמים אישית שלך.

לאחר מכן - תוכל גם לא לכלול כללים ממערכת כללים:

לאחר מכן - ניתן גם לא לכלול קבצים ממערכת חוקים באמצעות דפוסי אי הכללה, עם דפוס כולל לכלול אופציונלי.

קובץ לא ייכלל בעיבוד כשיש דפוס אי הכללה תואם, אך אין דפוס כולל התאמה.

מפרידי נתיבים בנתיב קובץ המקור מנורמלים להיות התו '/', כך שניתן להשתמש באותה מערך חוקים במספר פלטפורמות באופן שקוף.

בנוסף, טכניקת אי הכללה / הכללה הזו עובדת ללא קשר לאופן השימוש ב- PMD (למשל שורת פקודה, IDE, Ant), מה שמקל על שמירת היישום של כללי ה- PMD שלך באופן עקבי בכל הסביבה שלך.

הנה דוגמה מהירה:

  ערכת הכללים שלי. * / חלק / חבילה /.*. * / חלק / אחר / חבילה / FunkyClassNamePrefix. *. * / חלק / חבילה / ButNotThisClass. * ... 

6. מסקנה

במאמר מהיר זה, הצגנו את PMD - כלי גמיש וניתן להגדרה המתמקד בניתוח סטטי של קוד Java

כמו תמיד, הקוד המלא המוצג במדריך זה זמין באתר Github.


$config[zx-auto] not found$config[zx-overlay] not found