jkennedy1980 / Objective-C-CPD-Language

A CPD language definition for use with Objective-C source code
http://deadmeta4.com/2011/05/17/objective-c-copy-paste-detection-using-jenkins/
MIT License
48 stars 60 forks source link

I have parse errors when I try parse objective-C code #2

Closed soniccat closed 12 years ago

soniccat commented 12 years ago

I print: java -classpath “/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad/CPD/ObjCLanguage-0.0.2-SNAPSHOT.jar:/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad/CPD/pmd.jar” net.sourceforge.pmd.cpd.CPD –minimum-tokens 100 –files “/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad” –language ObjectiveC –encoding UTF-8 –format net.sourceforge.pmd.cpd.XMLRenderer > “/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/cpd-output.xml”

and have: com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 2431, column 40. Encountered: “x” (120), after : “\”\” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 61, column 110. Encountered: “\n” (10), after : “\” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 13, column 11. Encountered: “$” (36), after : “” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 495, column 11. Encountered: “$” (36), after : “” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 49, column 9. Encountered: “$” (36), after : “” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 70, column 25. Encountered: “$” (36), after : “” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180) com.deadmeta4.cpd.generated.TokenMgrError: Lexical error at line 29, column 17. Encountered: “$” (36), after : “” at com.deadmeta4.cpd.generated.ObjCParserTokenManager.getNextToken(ObjCParserTokenManager.java:6164) at com.deadmeta4.cpd.generated.ObjCParser.getNextToken(ObjCParser.java:7720) at net.sourceforge.pmd.cpd.ObjectivecTokenizer.tokenize(ObjectivecTokenizer.java:31) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:106) at net.sourceforge.pmd.cpd.CPD.add(CPD.java:72) at net.sourceforge.pmd.cpd.CPD.addDirectory(CPD.java:82) at net.sourceforge.pmd.cpd.CPD.addRecursively(CPD.java:67) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:180)

jkennedy1980 commented 12 years ago

Can you add a -v to the command and see if it reports the files which are causing the errors. If you find a file send me the code from the line/character range mentioned in the error. [ e.g. Lexical error at line 29, column 17. ]

soniccat commented 12 years ago

Sorry but I don't know java and may do something wrong. I added -v. But the output in console is the same and doesn't show file name.

java -classpath "/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad/CPD/ObjCLanguage-0.0.2-SNAPSHOT.jar:/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad/CPD/pmd.jar" net.sourceforge.pmd.cpd.CPD -v --minimum-tokens 100 --files "/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/projiPad" --language ObjectiveC --encoding UTF-8 --format net.sourceforge.pmd.cpd.XMLRenderer > "/Users/username/iPhoneProjects/projiOS/projiPad.v2/trunk/cpd-output.xml"

jkennedy1980 commented 12 years ago

Download release 0.0.5 and give it a shot. Paul Taykalo submitted a fix for 0x string literals and a few other things. I also added some additional logging which can be enabled by adding '-DObjC-CPD-LoggingEnabled=YES' to the CPD command. If you enable logging and use XML output the XML may be messed up but you should get filename info as the errors are generated.

jkennedy1980 commented 12 years ago

I updated the blog post with an example of enabling logging: http://deadmeta4.com/2011/05/17/objective-c-copy-paste-detection-using-jenkins/

PaulTaykalo commented 12 years ago

There is only : “\n” (10), after : “\” problem. Cannot reproduce it :) All others were fixed in 0.0.5

soniccat commented 12 years ago

Thanks guys. ObjCLanguage-0.0.5-SNAPSHOT.jar fixed all errors which I had ). No error messages in console.