You can subscribe to this list here.
2008 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(21) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Seb35 <se...@se...> - 2016-11-09 11:22:48
|
Hello, I was interested in obtaining the call graph for one of my software, and found phpCallGraph. I got issues running it with PHP 5.6/7.0, so I fixed the major bugs I encountered. The resulting patched phpCallGraph is on my GitHub account [1], with the last versions of ezcomponents, CodeAnalyzer, and PEAR librairies. When running it, the major issues I still have are related to autoloading classes. I successfully ran it on: * src/PHPCallgraph.php * my MediaWiki extension [2] * some other MediaWiki extensions or packages [3] I plan to improve the quality of phpCallGraph, apart if there is another more recent call graph creator for PHP I’m not aware of: * fixing major bugs: autoloading (e.g. Composer autoloader), missing indices in arrays * in the longer term, improve the inner quality: * I was surprised because ezReflection does not add a lot of features compared to the standard (today’s) Reflection and it is responsible of quite a lot of warnings/fatal errors, * perhaps use some phpDocumentor Reflection packages (Reflection [4], TypeResolver [5]) if they prove to be good quality, * in parallel, given the huge graphs it creates for huge packages like MediaWiki, I had the idea of creating a visualisation with D3.js to dive into the call graph with various zoom levels, perhaps linking the call graph of a plugin/extension to a high-level graph of the underlying software, displaying only relevant parts of it (exceptions, router, global functions, hooks); just an idea to be better defined and improved. [1] https://github.com/Seb35/phpcallgraph [2] https://www.mediawiki.org/wiki/File:Call_graph_of_extension_MediaWikiFarm.svg [3] see https://lists.wikimedia.org/pipermail/wikitech-l/2016-November/date.html (in the few hours) [4] https://github.com/phpDocumentor/Reflection [5] https://github.com/phpDocumentor/TypeResolver Thanks, Seb35 |
From: Christian W. <cw...@cw...> - 2015-09-08 18:20:04
|
Hello Vijay, > Thank you for your efforts. I like the tool and would like to get > this to work. I hope someone has some information on this. Do you > have any recommendations on how to get this resolved? https://sourceforge.net/p/phpcallgraph/code/HEAD/tree/trunk/package.xml.php#l109 This tells you that ezcReflection-0.7.0 was used, which was not released at the time. I have no idea if that was ever released, my temp file is not available anymore. -- Regards/Mit freundlichen Grüßen Christian Weiske -=≡ Geeking around in the name of science since 1982 ≡=- |
From: Christian W. <cw...@cw...> - 2015-09-07 18:41:55
|
Hello Vijay, > I installed it and now I am getting the following errors: > > $ bin/phpcallgraph -n -f png -o PHPCallGraph.png src/PHPCallGraph.php > PHP Fatal error: Uncaught exception 'ReflectionException' with > message 'Cannot set read-only property ezcReflectionClass::$class' I guess that graphviz is not compatible with the version of ezc components that you installed. Unfortunately I don't know which is the latest version that worked. -- Regards/Mit freundlichen Grüßen Christian Weiske -=≡ Geeking around in the name of science since 1982 ≡=- |
From: Christian W. <cw...@cw...> - 2015-09-05 06:06:05
|
Hello Vijay, > I am running this on OS X (Yosemite) and get the following errors: > Fatal error: require_once(): Failed opening required > 'Console/Getopt.php' You need to install the Console_Getopt package via pear: $ pear install console_getopt -- Regards/Mit freundlichen Grüßen Christian Weiske -=≡ Geeking around in the name of science since 1982 ≡=- |
From: Vijay P. <vij...@gm...> - 2015-09-05 00:10:22
|
I am running this on OS X (Yosemite) and get the following errors: % bin/phpcallgraph -n -f png -o PHPCallGraph.png src/PHPCallGraph.php Deprecated: Assigning the return value of new by reference is deprecated in /Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/pear/PEAR.php on line 569 Deprecated: Assigning the return value of new by reference is deprecated in /Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/pear/PEAR.php on line 572 Warning: require_once(Console/Getopt.php): failed to open stream: No such file or directory in /Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/pear/System.php on line 27 Fatal error: require_once(): Failed opening required 'Console/Getopt.php' (include_path='/Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/src:/Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/ezcomponents:/Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib:.::/Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/pear') in /Users/Vijay/phpcallgraph/phpcallgraph-0.8.0/lib/pear/System.php on line 27 |
From: Falko M. <ma...@fa...> - 2013-06-04 11:36:42
|
Hi osa2, you can use the --autoload option to provide a file with an autoload function. Cheers, Falko On 06/04/2013 12:34 PM, lis osm wrote: > Simple example: > > --- A.php --- > <?php > class A extends B > { > function aaa() > { > return; > } > } > ?> > > --- B.php --- > <?php > class B > { > function bbb() > { > return; > } > } > ?> > > Debug message is; > ##ERR## > Fatal error: Class 'B' not found in A.php on line 3 > > Off course, if adding require_once("B.php") to A.php, Both are shown. > But many case of today, autoload is deal with these relations. > > ...How can I do it? > > osa2 > > > > ------------------------------------------------------------------------------ > How ServiceNow helps IT people transform IT departments: > 1. A cloud service to automate IT design, transition and operations > 2. Dashboards that offer high-level views of enterprise services > 3. A single system of record for all IT processes > http://p.sf.net/sfu/servicenow-d2d-j > > > > _______________________________________________ > phpCallGraph-general mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general > |
From: lis o. <os...@gm...> - 2013-06-04 10:34:52
|
Simple example: --- A.php --- <?php class A extends B { function aaa() { return; } } ?> --- B.php --- <?php class B { function bbb() { return; } } ?> Debug message is; ##ERR## Fatal error: Class 'B' not found in A.php on line 3 Off course, if adding require_once("B.php") to A.php, Both are shown. But many case of today, autoload is deal with these relations. ...How can I do it? osa2 |
From: lis o. <os...@gm...> - 2013-05-29 06:12:50
|
Hi, I would like to generate call graph between Actions to Models on Symfony. (My Symfony version is 1.4.9) Please tell me how can I do it. Thanks, osa |
From: Selin G. <sel...@gm...> - 2012-06-29 15:26:48
|
i get it. i should use the autoload option to load external classes. 2012/6/29 Selin Gelvali <sel...@gm...> > It could be nice to help me out but it isn t a free software. I m working > for a company (as intern) so i can t give you their project but thank you > for asking. > I think some classes which have inheritance relations create the > problem. I'm using phpcallgraph 0.8.0. i ve tried the debug option and get > this lines : > > CodeAnalyzer: inspecting ../../lib/CU/ModelForm.php > Error in code analyzer sandbox: ##ERR## > Fatal error: Class 'Zend_Form' not found in /home/sgelvali/public_html/s... > > Zend_Form is the class parent in this case. > And sorry, i m not very good at programming mostly at PHP :) > > Thanks. > > Selin > > > > > 2012/6/29 Falko Menge <ma...@fa...> > >> Hi Selin, >> >> which version of phpCallGraph are you using? Have you tried the --debug >> option? Are you analyzing a free software project so that I can try it >> myself? >> >> Greetings from Berlin, >> Falko >> >> >> On 06/28/2012 05:35 PM, Selin Gelvali wrote: >> >>> Hi, >>> >>> I've written a message to your bug report page but i think it's not >>> shown there or anythingelse. >>> I m using phpcallgraph to create sequence diagrams of our project. We >>> have a big repository to parse and when i execute the program i have >>> just few sequence diagrams of some classes. >>> I don't understand why i ve not the other classes sequence diagrams. All >>> classes are same types and i m using recursive option of corse. program >>> can find php files but startFunction dosen't start with all these files. >>> I ve tried to debug it but i couldn 't find the problem. Can you please >>> help me ! >>> >>> Selin G. >>> >>> >>> ------------------------------**------------------------------** >>> ------------------ >>> Live Security Virtual Conference >>> Exclusive live event will cover all the ways today's security and >>> threat landscape has changed and how IT managers can respond. Discussions >>> will include endpoint security, mobile security and the latest in malware >>> threats. http://www.accelacomm.com/jaw/**sfrnl04242012/114/50122263/<http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/> >>> >>> >>> >>> ______________________________**_________________ >>> phpCallGraph-general mailing list >>> phpCallGraph-general@lists.**sourceforge.net<php...@li...> >>> https://lists.sourceforge.net/**lists/listinfo/phpcallgraph-**general<https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general> >>> >>> >> > |
From: Falko M. <ma...@fa...> - 2012-06-29 08:28:58
|
Hi Selin, which version of phpCallGraph are you using? Have you tried the --debug option? Are you analyzing a free software project so that I can try it myself? Greetings from Berlin, Falko On 06/28/2012 05:35 PM, Selin Gelvali wrote: > Hi, > > I've written a message to your bug report page but i think it's not > shown there or anythingelse. > I m using phpcallgraph to create sequence diagrams of our project. We > have a big repository to parse and when i execute the program i have > just few sequence diagrams of some classes. > I don't understand why i ve not the other classes sequence diagrams. All > classes are same types and i m using recursive option of corse. program > can find php files but startFunction dosen't start with all these files. > I ve tried to debug it but i couldn 't find the problem. Can you please > help me ! > > Selin G. > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > _______________________________________________ > phpCallGraph-general mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general > |
From: Selin G. <sel...@gm...> - 2012-06-28 15:35:20
|
Hi, I've written a message to your bug report page but i think it's not shown there or anythingelse. I m using phpcallgraph to create sequence diagrams of our project. We have a big repository to parse and when i execute the program i have just few sequence diagrams of some classes. I don't understand why i ve not the other classes sequence diagrams. All classes are same types and i m using recursive option of corse. program can find php files but startFunction dosen't start with all these files. I ve tried to debug it but i couldn 't find the problem. Can you please help me ! Selin G. |
From: Mohan A <moh...@ho...> - 2011-12-01 17:58:27
|
Hello I just came across this tool and started off with an example provided with the installation. It worked fine with the text format, but gave me the following for some others like png, etc. I'd like to be able to view the call graph visually if supported. Any help on this is highly appreciated! php ../bin/phpcallgraph -g -p -f png -o graph.png ../test/testfiles PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0 PHP Deprecated: Assigning the return value of new by reference is deprecated in .../Project/PHPCallGraph/phpcallgraph-0.8.0/lib/pear/PEAR.php on line 569 PHP Deprecated: Assigning the return value of new by reference is deprecated in .../PHPCallGraph/phpcallgraph-0.8.0/lib/pear/PEAR.php on line 572 PHP Warning: require_once(Console/Getopt.php): failed to open stream: No such file or directory in .../PHPCallGraph/phpcallgraph-0.8.0/lib/pear/System.php on line 27 PHP Fatal error: require_once(): Failed opening required 'Console/Getopt.php' (include_path='.../PHPCallGraph/phpcallgraph-0.8.0/src:.../PHPCallGraph/phpcallgraph-0.8.0/lib/ezcomponents:.../PHPCallGraph/phpcallgraph-0.8.0/lib:.:/usr/share/php:/usr/share/pear:.../PHPCallGraph/phpcallgraph-0.8.0/lib/pear') in /home/mariposa/Desktop/Project/PHPCallGraph/phpcallgraph-0.8.0/lib/pear/System.php on line 27 Thanks much! Mohan |
From: Falko M. <ma...@fa...> - 2009-08-06 01:08:04
|
Hi, It's been a while since the last release of phpCallGraph and in the meantime a couple of new developers joined to the project. Thus, version 0.8.0 introduces several new features and improvements. Most notably, Martin Cleaver added the ability to generate rudimentary per-method call graphs in the style of UML sequence diagrams. The new UmlGraphSequenceDiagramDriver outputs scripts readable by UMLGraph (http://www.umlgraph.org), which are then used to generate images with pic2plot of the GNU plotutils package. These images represent the calls made by a particular method. Another change, which might be a bit of a surprise for users of previous versions, is the change of the layouting direction in the GraphVizDriver from top-to-bottom to left-to-right. Experience has shown that this allows for more compact call graph layouts. Till Klampaeckel developed an output driver that outputs the calls as a serialized associative array. This allows to use the collected data in other PHP-based tools. Further improvements are a dead (unreachable) code analysis, new debugging facilities and a first approach to symbolic execution, which allows for tracking variable types. A newly introduced unit test suite allowed for some refactoring and the switch to updated versions of the underlying libraries without breaking things. This will also pave the path for further improvements of the analysis algorithms and the symbolic execution. Thanks to Christian Weiske and Till Klampaeckel we will soon provide PEAR packages for phpCallGraph and its underlying libraries. All users are encouraged to upgrade to the new version, which can be downloaded at http://phpcallgraph.sourceforge.net Direct Download Links: http://downloads.sourceforge.net/phpcallgraph/phpcallgraph-0.8.0.tar.gz http://downloads.sourceforge.net/phpcallgraph/phpcallgraph-0.8.0.zip Best regards, Falko |
From: Martin C. <mrj...@gm...> - 2009-07-22 00:18:19
|
On Tue, Jul 21, 2009 at 6:02 PM, Falko Menge<ma...@fa...> wrote: > Hi Martin, > > Martin Cleaver wrote: >> Hey Falko - can we get a release done please? >> >> It seems that you are busy on other things, which is fair enough, but I >> need to get stuff "out there" to be able to publicise the work I did. > > Sorry for the late response. I had a little accident and got a metal bar into my > leg, which apparently not only hindered me in walking, but also in answering my > mails. OUCH!! > I'll try my best to catch up with your work and make a new release including > your amazing contributions as soon as possible. Thanks :) > Do you have any deadlines for your publication? Not other than I promised people that I thought it would be out "very soon". But take a break. (A mental one, not another physical one!). > > Cheers, > Falko > > > btw: Could you please send mails about phpCallGraph only to ma...@fa... > and/or the list. My university account fal...@hp... is > deprecated. ;) Aha. Will do. Thanks Falko. |
From: Falko M. <ma...@fa...> - 2009-07-21 22:02:46
|
Hi Martin, Martin Cleaver wrote: > Hey Falko - can we get a release done please? > > It seems that you are busy on other things, which is fair enough, but I > need to get stuff "out there" to be able to publicise the work I did. Sorry for the late response. I had a little accident and got a metal bar into my leg, which apparently not only hindered me in walking, but also in answering my mails. I'll try my best to catch up with your work and make a new release including your amazing contributions as soon as possible. Do you have any deadlines for your publication? Cheers, Falko btw: Could you please send mails about phpCallGraph only to ma...@fa... and/or the list. My university account fal...@hp... is deprecated. ;) |
From: Falko M. <ma...@fa...> - 2009-07-21 21:58:32
|
Hi Martin, > It occurs to be that deriving types of all variables in php is going to > be hard or impossible without extra information. > > I see that coming from one of two sources: the user or/and phpdoc. > > Can instantsvc see the @return typing information? That's exactly the reason for using the Extended Reflection API of InstantSVC, which is underlying the CodeAnalyzer and makes use of phpDoc annotations. Thus phpCallGraph already has the information about parameter and return types. I just didn't have the time to start using it. The Extended Reflection API currently in the process of being contributed to eZ Components. One of the next releases will start to be directly linked against the latest ezcReflection component. > Otherwise we should get the user to maintain a type overriding file. This could be a nice additional feature for the reflection component. Do you have concrete ideas how such a file should look like? Cheers, Falko |
From: Falko M. <ma...@fa...> - 2009-07-21 21:48:26
|
> phpcallgraph does a lexical investigation (sequential as appears in > the source file) of the methods in a class. This does not do a > traversal according to how the methods are called. > > It does hold an overview of the relationships after it has finished > (but doesn't know what's beyond the next layer during the > startFunction() and endFunction). During destruct, its seen > everything. We know it knows because it passes all these > relationships to dot. > > So, during destruct it would be possible to ask for a tree of > depended-upon methods for a given method. It would be possible to > visit each entry point method and to get all "dependent routines" that > need to be shown. > > A question would be to what depth of dependents we would want to show. I would suggest to have a numeric option for that. > Does my logic make sense? Yes, it does. However, drivers are supposed to support multiple analyses on different file sets, with reset being called after each analysis. Using the destructor would only allow to get the data of last pass, but maybe that's ok, for the beginning, since the umlgraph driver is working differently anyway. |
From: Martin C. <mrj...@gm...> - 2009-07-20 14:30:41
|
Hey Falko - can we get a release done please? It seems that you are busy on other things, which is fair enough, but I need to get stuff "out there" to be able to publicise the work I did. If you have feedback from you on the issues and solutions I've proposed over the last week I'll make time to process those within the week. Thanks, M Sent from my iPhone |
From: Martin C. <mrj...@gm...> - 2009-07-16 11:56:32
|
Hi Falko, It occurs to be that deriving types of all variables in php is going to be hard or impossible without extra information. I see that coming from one of two sources: the user or/and phpdoc. Can instantsvc see the @return typing information? Otherwise we should get the user to maintain a type overriding file. Thanks, Martin Sent from my iPhone |
From: Martin C. <mrj...@gm...> - 2009-07-16 11:24:50
|
Update on this: I checked in (I think svn:142) last night. As well as adding diagnostics showing the window around the current token position, it catches the condition of $myFoo = new Foo() such that subsequent accesses to $myFoo->methodName() are known to be on object type Foo. Martin Sent from my iPhone On 2009-07-15, at 4:03 AM, Falko Menge <ma...@fa...> wrote: > Hi Martin, > > first of all, thank you for this awesome contribution! > > It is a known issue of phpCallGraph that certain cases are not > analyzed > correctly by the currently applied heuristics. I'm currently > investigating > possibilities of symbolic execution to get these calls right. > However, it will > still take a while until this issue will be solved. > > If you need the source code of the function/method, you can extend > the signature > of CallgraphDriver::startFunction to include either the line numer > of the end of > the function or directly the source code. Both are available when > this method is > called in PHPCallGraph::parseMethodBody. Of course, you would have > to change all > implementations of the CallgraphDriver interface, but that shouldn't > be to hard, > since they could just ignore the additional data. > > I wasn't able to actually get output from your driver. Or more > specifically the > PNG and HTML output files where empty. I guess, this is due to some > external > software missing on my machine. Could you therefore add some hints > on how to use > your driver to the readme.txt? > > Greetings from Berlin > Falko > > > Martin@Cleaver.org wrote: >> To be clearer, here's a real example: >> >> Most of the call arrows for the attached are correct, except for the >> following two, where the class is unset, meaning my code draws the >> arrows to :ClassUnknown: >> >> $ca->inspectFiles($files); >> $this->codeSummary = $ca->getCodeSummary(); >> >> Thanks, >> Martin. >> >> <?php >> class PHPCallGraph { >> public function parse(array $filesOrDirs, $recursive = false) { >> $files = $this->collectFileNames($filesOrDirs, $recursive); >> $ca = new iscCodeAnalyzer(null); >> $ca->setDebug($this->debug); >> $ca->setAutoloadFile($this->autoloadFile); >> $ca->inspectFiles($files); >> $this->codeSummary = $ca->getCodeSummary(); >> $this->analyseCodeSummary(); >> } >> } >> ?> >> >> >> -- >> Martin@Cleaver.org >> http://twitter.com/mrjcleaver >> +1 416-786-6752 (GMT-5) >> >> >> >> >> On Mon, Jul 13, 2009 at 10:26 PM, Martin@Cleaver.org<Ma...@cl... >> > wrote: >>> Sorry about that incomplete email - I was balancing my 8 month old >>> on my lap! >>> >>> This is what it should have said: >>> >>>> It works quite well but doesn't seem to always be passed a class, >>>> leading the call arrows to go to UnknownClass rather than to the >>>> correct object. >>> More examples can be seen in >>> http://phpcallgraph.svn.sourceforge.net/viewvc/phpcallgraph/trunk/examples/output/ >>> >>>> Is the class=null on addCall() a known issue? >>> Also, I want to be able to get the source code of the current method >>> available to the driver. Can we make the codeAnalyzer available to >>> the >>> driver, or pass the sourcecode? >>> >>> Thanks, >>> Martin. >>> >>> >>> -- >>> Martin@Cleaver.org >>> http://twitter.com/mrjcleaver >>> +1 416-786-6752 (GMT-5) >>> >>> >>> >>> On Mon, Jul 13, 2009 at 3:10 PM, Martin@Cleaver.org <Ma...@cl... >>> > wrote: >>>> Hi - so attached is an example output from my driver that outputs >>>> umlgraph sequence diagrams. >>>> >>>> It works quite well but doesn't seem to always be passed a class, >>>> leading the call arrows to go to UnknownClass rather than to the >>>> correct object. >>>> Is this a known issue? >>>> Thanks, M. >>>> >>>> >>>> -- >>>> Martin@Cleaver.org >>>> http://twitter.com/mrjcleaver >>>> +1 416-786-6752 (GMT-5) >>>> >>> >>> --- >>> --- >>> ------------------------------------------------------------------ >>> >>> --- >>> --- >>> --- >>> --- >>> ------------------------------------------------------------------ >>> Enter the BlackBerry Developer Challenge >>> This is your chance to win up to $100,000 in prizes! For a limited >>> time, >>> vendors submitting new applications to BlackBerry App World(TM) >>> will have >>> the opportunity to enter the BlackBerry Developer Challenge. See >>> full prize >>> details at: http://p.sf.net/sfu/Challenge >>> >>> --- >>> --- >>> ------------------------------------------------------------------ >>> >>> _______________________________________________ >>> phpCallGraph-general mailing list >>> php...@li... >>> https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general > |
From: Martin C. <mrj...@gm...> - 2009-07-16 11:19:47
|
For anyone reading, I have a shell script that wraps classless php files into a class so they can be processed by instantsvc. I gave Falko a copy: I think he's going to make the wrapping process transparent. Martin Sent from my iPhone On 2009-07-15, at 4:58 AM, Falko Menge <ma...@fa...> wrote: > Hi Martin, > > yes, it means that the code to be analyzed has to be altered. > An example for a file called test.php would be: > > <?php > function dummyFunctionForFile_test_php() { > phpinfo(); > } > ?> > > Of course this is not very elegant, but currently the only > feasible way due to some conceptual restrictions resulting from the > utilization of the InstantSVC CodeAnalyzer. I already had an idea on > how to > make that dirty dummy function workaround unnecessary, but it's like > always: So much to code, so little time. ;) > > btw: Are you analysing any free software? I'm always keen to put > interesting > examples on the phpCallGraph website. > > Cheers, > Falko > > > Martin@Cleaver.org wrote: >> Fakko, >> >> You write: >> >> "Such code can be manually wrapped in a dummy function called >> dummyFunctionForFile_filename_php() which will then >> be recognized by PHPCallGraph." >> >> Can you give me an example of this? Do I have to alter the source >> code being >> analyzed? >> >> Looks really interesting this, I'm looking to see if I can generate >> a UML >> sequence diagram from the call graph. >> >> http://www.google.com/search?q=uml+sequence+diagram+call+graph >> >> Thanks, >> Martin. >> -- >> Martin@Cleaver.org >> http://twitter.com/mrjcleaver >> +1 416-786-6752 (GMT-5) >> >> >> >> --- >> --------------------------------------------------------------------- >> >> --- >> --- >> --- >> --------------------------------------------------------------------- >> Enter the BlackBerry Developer Challenge >> This is your chance to win up to $100,000 in prizes! For a limited >> time, >> vendors submitting new applications to BlackBerry App World(TM) >> will have >> the opportunity to enter the BlackBerry Developer Challenge. See >> full prize >> details at: http://p.sf.net/sfu/Challenge >> >> >> --- >> --------------------------------------------------------------------- >> >> _______________________________________________ >> phpCallGraph-general mailing list >> php...@li... >> https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general > > --- > --- > --- > --------------------------------------------------------------------- > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited > time, > vendors submitting new applications to BlackBerry App World(TM) will > have > the opportunity to enter the BlackBerry Developer Challenge. See > full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > phpCallGraph-general mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general |
From: Martin@Cleaver.org <Martin@Cleaver.org> - 2009-07-15 22:08:47
|
See svn rev 142... I hope it works for you! Best, Martin. -- Martin@Cleaver.org http://twitter.com/mrjcleaver +1 416-786-6752 (GMT-5) |
From: Martin@Cleaver.org <Martin@Cleaver.org> - 2009-07-15 19:36:36
|
Falko It just occurred to me: phpcallgraph does a lexical investigation (sequential as appears in the source file) of the methods in a class. This does not do a traversal according to how the methods are called. It does hold an overview of the relationships after it has finished (but doesn't know what's beyond the next layer during the startFunction() and endFunction). During destruct, its seen everything. We know it knows because it passes all these relationships to dot. So, during destruct it would be possible to ask for a tree of depended-upon methods for a given method. It would be possible to visit each entry point method and to get all "dependent routines" that need to be shown. A question would be to what depth of dependents we would want to show. Does my logic make sense? Thanks, Martin. -- Martin@Cleaver.org http://twitter.com/mrjcleaver +1 416-786-6752 (GMT-5) |
From: Martin@Cleaver.org <Martin@Cleaver.org> - 2009-07-15 11:31:33
|
Falko, You asked me whether I could contribute an example of an opensource project. The reason I wrote the driver is that I'm analyzing a proprietary extension of tikiwiki. tikiwiki is utterly huge, so trying to understand what the coders have been intending is a real issue. To date I have only attempted to map out the extension. But, as you asked, I am now trying it on the general open source part of it. This will be a good test of how efficiently phpcallgraph scales in memory... I'll report back! Best, Martin. -- Martin@Cleaver.org http://twitter.com/mrjcleaver +1 416-786-6752 (GMT-5) |
From: Martin@Cleaver.org <Martin@Cleaver.org> - 2009-07-15 10:28:01
|
Hi Falko, On Wed, Jul 15, 2009 at 4:03 AM, Falko Menge<ma...@fa...> wrote: > Hi Martin, > > first of all, thank you for this awesome contribution! Glad you like it! I've created #phpcallgraph on irc://irc.freenode.net - can we meet there and chat? Also I added (the id of who I assume is) you to Skype. I'm mrjcleaver. We could talk there. > > It is a known issue of phpCallGraph that certain cases are not analyzed > correctly by the currently applied heuristics. I'm currently investigating > possibilities of symbolic execution to get these calls right. However, it will > still take a while until this issue will be solved. Ok, I think I can live with it for now. Thanks :) > If you need the source code of the function/method, you can extend the signature > of CallgraphDriver::startFunction to include either the line numer of the end of > the function or directly the source code. Both are available when this method is > called in PHPCallGraph::parseMethodBody. Of course, you would have to change all > implementations of the CallgraphDriver interface, but that shouldn't be to hard, > since they could just ignore the additional data. Ok. E > I wasn't able to actually get output from your driver. Or more specifically the > HTML and PNG output files where empty. The HTML files were empty because I actually hacked a global variable (eww!) in on my copy, together with an apology pending hearing from you... I'm going to pass the sourcecode The PNG files could be empty if you didn't have UMLgraph installed properly. I think all it needs is UMLGraph's sequence.pic and pic2plot - but I had to upgrade a lot of software on my Mac to get everything working so I'd to verify. I guess, this is due to some external > software missing on my machine. Could you therefore add some hints on how to use > your driver to the readme.txt? Will do, once I've verified it. > Greetings from Berlin And greetings from a Brit in Toronto! > Falko Martin. > > > Martin@Cleaver.org wrote: >> To be clearer, here's a real example: >> >> Most of the call arrows for the attached are correct, except for the >> following two, where the class is unset, meaning my code draws the >> arrows to :ClassUnknown: >> >> $ca->inspectFiles($files); >> $this->codeSummary = $ca->getCodeSummary(); >> >> Thanks, >> Martin. >> >> <?php >> class PHPCallGraph { >> public function parse(array $filesOrDirs, $recursive = false) { >> $files = $this->collectFileNames($filesOrDirs, $recursive); >> $ca = new iscCodeAnalyzer(null); >> $ca->setDebug($this->debug); >> $ca->setAutoloadFile($this->autoloadFile); >> $ca->inspectFiles($files); >> $this->codeSummary = $ca->getCodeSummary(); >> $this->analyseCodeSummary(); >> } >> } >> ?> >> >> >> -- >> Martin@Cleaver.org >> http://twitter.com/mrjcleaver >> +1 416-786-6752 (GMT-5) >> >> >> >> >> On Mon, Jul 13, 2009 at 10:26 PM, Martin@Cleaver.org<Ma...@cl...> wrote: >>> Sorry about that incomplete email - I was balancing my 8 month old on my lap! >>> >>> This is what it should have said: >>> >>>> It works quite well but doesn't seem to always be passed a class, leading the call arrows to go to UnknownClass rather than to the correct object. >>> More examples can be seen in >>> http://phpcallgraph.svn.sourceforge.net/viewvc/phpcallgraph/trunk/examples/output/ >>> >>>> Is the class=null on addCall() a known issue? >>> Also, I want to be able to get the source code of the current method >>> available to the driver. Can we make the codeAnalyzer available to the >>> driver, or pass the sourcecode? >>> >>> Thanks, >>> Martin. >>> >>> >>> -- >>> Martin@Cleaver.org >>> http://twitter.com/mrjcleaver >>> +1 416-786-6752 (GMT-5) >>> >>> >>> >>> On Mon, Jul 13, 2009 at 3:10 PM, Martin@Cleaver.org <Ma...@cl...> wrote: >>>> Hi - so attached is an example output from my driver that outputs umlgraph sequence diagrams. >>>> >>>> It works quite well but doesn't seem to always be passed a class, leading the call arrows to go to UnknownClass rather than to the correct object. >>>> Is this a known issue? >>>> Thanks, M. >>>> >>>> >>>> -- >>>> Martin@Cleaver.org >>>> http://twitter.com/mrjcleaver >>>> +1 416-786-6752 (GMT-5) >>>> >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------------ >>> Enter the BlackBerry Developer Challenge >>> This is your chance to win up to $100,000 in prizes! For a limited time, >>> vendors submitting new applications to BlackBerry App World(TM) will have >>> the opportunity to enter the BlackBerry Developer Challenge. See full prize >>> details at: http://p.sf.net/sfu/Challenge >>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> phpCallGraph-general mailing list >>> php...@li... >>> https://lists.sourceforge.net/lists/listinfo/phpcallgraph-general > > |