0

I have used PMD before on Windows. I found this video very helpful for advising me of the correct PMD command to input for Windows.

I want to use PMD on Mac. I have installed PMD (I know it's installed because by inputting 'pmd pmd -help', I get info) but I am not able to give the correct PMD terminal command.

I used the format below on Windows and it worked correctly:

pmd –d “[Your path to the folder, for example pmdCodeAnalysis]” – f html –R “[Your path to pmdCodeAnalysis\Rules\ApexRules.xml” –reportfile “..\PMDOutput.html”

but inputting what I perceive to be the Mac equivalent doesn't work.

pmd pmd -ls /Users/andyhitchings/Desktop/pmd/Code -f html -R /Users/andyhitchings/Desktop/pmd/Rules/ApexRules.xml -reportfile “../pmdOutput.html”

Can anyone advise what the correct command should be to get PMD to work on Mac?

Thank you,

11
  • Did you try this ? pmd -d "Project Dir Path till src" -R apex-ruleset -language apex -f html > "Report Folder Path\PMDReport.html" Commented May 10, 2018 at 8:49
  • you must have downloaded PMD, open bin folder inside that and from that same path open Command Prompt and execute above command. Commented May 10, 2018 at 9:01
  • I'm not at my Mac to look, but as a side note, there are plugins for both Eclipse and Visual Studio Code to run PMD in the IDE.
    – David Reed
    Commented May 10, 2018 at 9:23
  • 1
    \Users\andyhitchings\Desktop\pmd\6.2.0\bin\Code\1.apxc.java , is this a correct path where you have added your source code to scan ? Commented May 10, 2018 at 9:58
  • 1
    The command line arguments don't change. -d is always -d; it would never change to -ls.
    – Adrian Larson
    Commented May 10, 2018 at 16:53

3 Answers 3

3

Many fragments of your command look wrong when I compare it to what I normally use and what is described here in the docs:https://pmd.github.io/pmd-6.3.0/pmd_userdocs_getting_started.html

E.g. there is no -ls parameter. You have to use -d as in Windows. I highly recommend starting with a simple command where no reports are written to boil down the problem to a specific fragment.

$ ./bin/run.sh pmd -d ../../../src/classes/ -f html -R rulesets/apex/basic.xml -language apex
1
  • 1
    Thank you so much, Robert! I have now got this brilliant tool working on mac. The command I used in the end was: pmd pmd -d ../../codeX -R /Users/andyhitchings/Desktop/pmd/Rules/ApexRules.xml -language apex -f html > /Users/andyhitchings/Desktop/pmdReport.html from the bin folder of the PMD directory. Commented May 11, 2018 at 7:13
1

Here is the command, you need to input this from bin folder of your PMD

pmd -d "Project Dir Path till src" -R apex-ruleset -language apex -f html > "Report Folder Path\PMDReport.html"

How I execute this command to scan my source code from local drive

pmd -d "C:\Demo Folder\src" -R apex-ruleset -language apex -f html > "C:\Users\Nachiket\Desktop\Reports\PMDReportName.html"

Where,

Project Dir Path till src -- > "C:\Demo Folder\src" I have my source code stored here, C drive, folder name "Demo Folder"

"Report Folder Path\PMDReport.html" -- > "C:\Users\Nachiket\Desktop\Reports\PMDReportName.html", I want to store my report here after PMD command finishes its execution.

In Your case,

pmd -d "Project Dir Path till src" -R apex-ruleset -language apex -f html > "Report Folder Path\PMDReport.html"

you can execute this command like following to scan your source code from local drive

pmd -d "\Users\andyhitchings\Desktop\pmd\6.2.0\bin\Code\1.apxc" -R apex-ruleset -language apex -f html > "\Users\andyhitchings\Desktop\pmd\6.2.0\bin\reportInfo\PMDReportName.html"

Where,

Project Dir Path till src -- > "\Users\andyhitchings\Desktop\pmd\6.2.0\bin\Code\1.apxc" You have your source code stored here.

"Report Folder Path\PMDReport.html" -- > "\Users\andyhitchings\Desktop\pmd\6.2.0\bin\reportInfo\PMDReportName.html", You want to store your report here after PMD command finishes its execution.

4
  • Thanks for your help. Unfortunately, i'm still returning an error. A file is created but it reads: '-d is NOT a valid application name, valid options are:pmd, cpd, cpdgui, designer, bgastviewer, designerold'. Commented May 10, 2018 at 10:33
  • \Users\andyhitchings\Desktop\pmd\6.2.0\bin\Code\1.apxc , is this a correct path, do you have your source code stored in PMD bin folder and what type of file 1.apxc is ? can you try by 1.cls Commented May 10, 2018 at 10:37
  • @AndyHitchings or try removing your file out of PMD folder,apex class are stored with extension as .cls Commented May 10, 2018 at 10:42
  • thanks for your help but it still doesn't work. The command just hangs and I don't get the expected output. PMD works flawlessly on Windows but it doesn't work well on Mac, at least for me. Also, on Mac, I can't get PMD to work with Eclipse. Frustrating to say the least. Thanks for your efforts and help anyway! Commented May 10, 2018 at 11:03
0

You can also use the SFDX-CLI code scanner instead of running PMD on your own. You should be able to install this into your CI runner and do a force installation.

SFDX-CLI Scanner

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .