Lazarus

Announcements => Third party => Topic started by: zamtmn on September 14, 2016, 03:23:05 am

Title: Visualization of Pascal program dependencies
Post by: zamtmn on September 14, 2016, 03:23:05 am
Good day All!
A small program to build a dependency tree.
http://svn.shamangrad.net/zcad/trunk/other/pudgb/ https://github.com/zamtmn/pudgb
Uses fcl-passrc to parse sources.
Import lpi, scan, and save. Result like this
Code: [Select]
DiGraph Classes {
 pudgb -> mainform
 mainform -> uoptions
 mainform -> uscaner
 mainform -> uscanresult
 mainform -> uwriter
 mainform -> ulpiimporter
 uscaner -> uoptions
 uscaner -> uscanresult
 uscaner -> ufileutils
 uwriter -> uoptions
 uwriter -> uscanresult
 ulpiimporter -> uoptions
 ulpiimporter -> ufileutils
}
can be visualized in GraphViz (or converted to yEd)
Мore pictures:
(http://i83.fastpic.ru/thumb/2016/0913/14/3663f49f884e966f37173218b4645b14.jpeg) (http://fastpic.ru/view/83/2016/0913/3663f49f884e966f37173218b4645b14.png.html)
(http://i85.fastpic.ru/thumb/2016/0913/d1/075ae3680268bd80c6b1ff12897004d1.jpeg) (http://fastpic.ru/view/85/2016/0913/075ae3680268bd80c6b1ff12897004d1.png.html)
(http://i78.fastpic.ru/thumb/2016/0913/53/92c0330153fb6e6ff7f41c65cc87bf53.jpeg) (http://fastpic.ru/view/78/2016/0913/92c0330153fb6e6ff7f41c65cc87bf53.png.html)
(http://i84.fastpic.ru/thumb/2016/0913/ad/8e7879e48cca82948dcd0b3eefbbeaad.jpeg) (http://fastpic.ru/view/84/2016/0913/8e7879e48cca82948dcd0b3eefbbeaad.png.html)
(http://i84.fastpic.ru/thumb/2016/0913/4c/52a49a89f51968f465c2f774694a484c.jpeg) (http://fastpic.ru/view/84/2016/0913/52a49a89f51968f465c2f774694a484c.png.html)
(http://i84.fastpic.ru/thumb/2016/0913/0b/8552429f9c353318883983438755c80b.jpeg) (http://fastpic.ru/view/84/2016/0913/8552429f9c353318883983438755c80b.png.html)
(http://i84.fastpic.ru/thumb/2016/0913/99/_fb340d6c60d83397667bedf9bd8b1f99.jpeg) (http://fastpic.ru/view/84/2016/0913/_fb340d6c60d83397667bedf9bd8b1f99.png.html)
Title: Re: Visualization of Pascal program dependencies
Post by: Leledumbo on September 14, 2016, 05:37:57 am
Looks similar: https://github.com/GalapagosAdmin/PasViz :P
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on September 14, 2016, 06:13:25 am
Yes it is the same. But I use the parser from the fpc structure. Also maybe try the data types graph
Title: Re: Visualization of Pascal program dependencies
Post by: marcov on September 14, 2016, 10:45:57 am
I've played a bit with it and have a few problems.

The first (not supporting /* in -Fu directories like FPC does) is easily worked around, but the second sees to be that the -Fi for includes only seems to work for the first module not for later ones?

For it to really be useful it should model both interface and implementation dependencies (dashes and dotted lines?) though.

It is an interesting start though, and it is great that one can play with it themselves.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on September 14, 2016, 04:08:33 pm
>> but the second sees to be that the -Fi for includes only seems to work for the first module not for later ones?
Should work for all. But there is no support for Lazarus macros.
In my opinion while the big problem is errors on the right code in fcl-passrc

I will add settings. I think something like:
-Include to graph mask
-Exclude from graph mask
-Include not fonded units to graph
-Line type for interface uses edges
-Line type for implementation uses edges
-Colorizing nodes from unit folder
-Your wishes))

Also will be useful to find all loops in graph
Title: Re: Visualization of Pascal program dependencies
Post by: marcov on September 14, 2016, 06:02:30 pm
Not found units and other data to a log file?
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on September 14, 2016, 06:18:09 pm
yes.
-Informative log
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on September 15, 2016, 10:43:26 pm
Added simple settings. There may be difficulties with the building, the program now depends on non-standard components ( http://svn.shamangrad.net/zcad/trunk/cad_source/components/ ). But the interface is very simple
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on September 22, 2016, 07:26:35 pm
Added finding loops in the program uses structure.
An example of analyzing a program consisting of more than 200 units (https://sourceforge.net/projects/zcad). Found 4 bottlenecks forming loops:
Code: [Select]
DiGraph Classes {
 edge [style=solid]
 uzcfcommandline_34_4 -> uzcdrawings_43_7
 edge [style=solid]
 uzcfcommandline_34_4 -> uzccommandsmanager_25_4
 edge [style=solid]
 uzcfcommandline_34_4 -> uzctreenode_26_4
 edge [style=dotted]
 uzcfcommandline_34_4 -> uzcshared_14_0
 edge [style=dotted]
 uzeentity_23_5 -> uzglviewareageneral_34_0
 edge [style=dotted]
 uzeentity_23_5 -> uzeentityfactory_9_0
 edge [style=dotted]
 uzeentity_23_5 -> uzeentgenericsubentry_18_0
 edge [style=dotted]
 uzeentity_23_5 -> UGDBSelectedObjArray_14_2
 edge [style=dotted]
 uzgprimitives_12_1 -> uzglvectorobject_12_0
 edge [style=solid]
 uzglvectorobject_12_0 -> uzgprimitives_12_1
 edge [style=solid]
 uzglviewareageneral_34_0 -> UGDBSelectedObjArray_14_2
 edge [style=solid]
 uzglviewareageneral_34_0 -> uzeentity_23_5
 edge [style=solid]
 uzglviewareageneral_34_0 -> uzedrawingabstract_15_0
 edge [style=solid]
 uzglviewareageneral_34_0 -> uzeentitiestree_10_0
 edge [style=solid]
 uzglviewareageneral_34_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 uzglviewareageneral_34_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzglviewareageneral_34_0 -> UGDBVisibleOpenArray_9_0
 edge [style=solid]
 uzglviewareageneral_34_0 -> uzglviewareaabstract_19_0
 edge [style=solid]
 UGDBSelectedObjArray_14_2 -> uzeentwithmatrix_10_0
 edge [style=solid]
 UGDBSelectedObjArray_14_2 -> uzeentity_23_5
 edge [style=dotted]
 UGDBSelectedObjArray_14_2 -> uzedrawingabstract_15_0
 edge [style=dotted]
 UGDBSelectedObjArray_14_2 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzeentwithmatrix_10_0 -> uzeentity_23_5
 edge [style=solid]
 uzeentwithmatrix_10_0 -> uzeentitiestree_10_0
 edge [style=solid]
 uzeentitiestree_10_0 -> gzctnrtree_8_0
 edge [style=solid]
 uzeentitiestree_10_0 -> UGDBVisibleOpenArray_9_0
 edge [style=solid]
 uzeentitiestree_10_0 -> uzeentity_23_5
 edge [style=solid]
 gzctnrtree_8_0 -> UGDBVisibleOpenArray_9_0
 edge [style=solid]
 gzctnrtree_8_0 -> uzeentity_23_5
 edge [style=solid]
 UGDBVisibleOpenArray_9_0 -> uzeentity_23_5
 edge [style=solid]
 UGDBVisibleOpenArray_9_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 UGDBOpenArrayOfPV_12_1 -> uzeentity_23_5
 edge [style=dotted]
 UGDBOpenArrayOfPV_12_1 -> uzeentityfactory_9_0
 edge [style=solid]
 uzeentityfactory_9_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzeentityfactory_9_0 -> uzeentity_23_5
 edge [style=solid]
 uzeentgenericsubentry_18_0 -> UGDBVisibleTreeArray_8_0
 edge [style=solid]
 uzeentgenericsubentry_18_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 uzeentgenericsubentry_18_0 -> uzeentwithmatrix_10_0
 edge [style=solid]
 uzeentgenericsubentry_18_0 -> uzeentity_23_5
 edge [style=solid]
 uzeentgenericsubentry_18_0 -> uzeentitiestree_10_0
 edge [style=solid]
 UGDBVisibleTreeArray_8_0 -> uzeentitiestree_10_0
 edge [style=solid]
 UGDBVisibleTreeArray_8_0 -> UGDBVisibleOpenArray_9_0
 edge [style=solid]
 UGDBVisibleTreeArray_8_0 -> uzeentity_23_5
 edge [style=solid]
 uzedrawingabstract_15_0 -> uzeentity_23_5
 edge [style=solid]
 uzedrawingabstract_15_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzedrawingabstract_15_0 -> uzeroot_13_0
 edge [style=solid]
 uzedrawingabstract_15_0 -> UGDBSelectedObjArray_14_2
 edge [style=solid]
 uzedrawingabstract_15_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 uzeroot_13_0 -> uzeentitiestree_10_0
 edge [style=solid]
 uzeroot_13_0 -> uzeentity_23_5
 edge [style=solid]
 uzeroot_13_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzeroot_13_0 -> uzeentconnected_4_0
 edge [style=solid]
 uzeentconnected_4_0 -> uzeentity_23_5
 edge [style=solid]
 uzeentconnected_4_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzeentconnected_4_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 uzglviewareaabstract_19_0 -> UGDBOpenArrayOfPV_12_1
 edge [style=solid]
 uzglviewareaabstract_19_0 -> uzeentgenericsubentry_18_0
 edge [style=solid]
 uzglviewareaabstract_19_0 -> uzeentitiestree_10_0
 edge [style=solid]
 uzglviewareaabstract_19_0 -> uzedrawingabstract_15_0
 edge [style=solid]
 uzglviewareaabstract_19_0 -> uzeentity_23_5
 edge [style=solid]
 uzcdrawings_43_7 -> uzedimblocksregister_15_1
 edge [style=solid]
 uzcdrawings_43_7 -> uzcdrawing_30_7
 edge [style=dotted]
 uzcdrawings_43_7 -> uzcenitiesvariablesextender_21_0
 edge [style=dotted]
 uzcdrawings_43_7 -> uzcshared_14_0
 edge [style=dotted]
 uzcdrawings_43_7 -> uzccommandsmanager_25_4
 edge [style=dotted]
 uzedimblocksregister_15_1 -> uzcutils_23_0
 edge [style=solid]
 uzcutils_23_0 -> zcmultiobjectcreateundocommand_8_0
 edge [style=solid]
 uzcutils_23_0 -> uzcdrawing_30_7
 edge [style=solid]
 uzcutils_23_0 -> uzcdrawings_43_7
 edge [style=solid]
 zcmultiobjectcreateundocommand_8_0 -> uzcdrawings_43_7
 edge [style=solid]
 uzcdrawing_30_7 -> zcchangeundocommand_9_2
 edge [style=solid]
 uzcdrawing_30_7 -> zcobjectchangeundocommand_5_1
 edge [style=dotted]
 uzcdrawing_30_7 -> uzcdrawings_43_7
 edge [style=dotted]
 uzcdrawing_30_7 -> uzcshared_14_0
 edge [style=dotted]
 uzcdrawing_30_7 -> uzccommandsmanager_25_4
 edge [style=dotted]
 zcchangeundocommand_9_2 -> uzcdrawings_43_7
 edge [style=dotted]
 zcobjectchangeundocommand_5_1 -> uzcdrawings_43_7
 edge [style=solid]
 uzcshared_14_0 -> uzcfcommandline_34_4
 edge [style=solid]
 uzccommandsmanager_25_4 -> uzcctrldynamiccommandmenu_7_1
 edge [style=solid]
 uzccommandsmanager_25_4 -> uzcinfoform_24_2
 edge [style=dotted]
 uzccommandsmanager_25_4 -> uzcshared_14_0
 edge [style=solid]
 uzcctrldynamiccommandmenu_7_1 -> uzcinfoform_24_2
 edge [style=dotted]
 uzcinfoform_24_2 -> uzcshared_14_0
 edge [style=solid]
 uzcenitiesvariablesextender_21_0 -> uzcshared_14_0
 edge [style=solid]
 uzctreenode_26_4 -> uzcutils_23_0
 edge [style=dotted]
 uzctreenode_26_4 -> uzcshared_14_0
 edge [style=dotted]
 uzctreenode_26_4 -> uzccommandsmanager_25_4
 edge [style=dotted]
 uzctreenode_26_4 -> uzcdrawings_43_7
 edge [style=solid]
 uzccombase_60_5 -> uzcoimultiobjects_19_3
 edge [style=dotted]
 uzcoimultiobjects_19_3 -> uzcmainwindow_95_3
 edge [style=dotted]
 uzcoimultiobjects_19_3 -> uzcoidecorations_38_3
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcgui2color_15_1
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcgui2linewidth_10_1
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcgui2linetypes_18_1
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcoidecorations_38_3
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcgui2textstyles_12_1
 edge [style=solid]
 uzcmainwindow_95_3 -> uzcgui2dimstyles_11_1
 edge [style=dotted]
 uzcgui2color_15_1 -> uzcmainwindow_95_3
 edge [style=dotted]
 uzcgui2linewidth_10_1 -> uzcmainwindow_95_3
 edge [style=dotted]
 uzcgui2linetypes_18_1 -> uzcmainwindow_95_3
 edge [style=solid]
 uzcoidecorations_38_3 -> uzccominterface_64_2
 edge [style=dotted]
 uzcoidecorations_38_3 -> uzcgui2color_15_1
 edge [style=dotted]
 uzcoidecorations_38_3 -> uzcgui2linewidth_10_1
 edge [style=dotted]
 uzcoidecorations_38_3 -> uzcgui2linetypes_18_1
 edge [style=solid]
 uzccominterface_64_2 -> uzcflinetypes_29_1
 edge [style=solid]
 uzccominterface_64_2 -> uzccombase_60_5
 edge [style=solid]
 uzccominterface_64_2 -> uzcflayers_45_1
 edge [style=dotted]
 uzccominterface_64_2 -> uzcmainwindow_95_3
 edge [style=dotted]
 uzcflinetypes_29_1 -> uzcgui2linetypes_18_1
 edge [style=dotted]
 uzcflayers_45_1 -> uzcgui2linetypes_18_1
 edge [style=dotted]
 uzcgui2textstyles_12_1 -> uzcmainwindow_95_3
 edge [style=dotted]
 uzcgui2dimstyles_11_1 -> uzcmainwindow_95_3
}
(http://i78.fastpic.ru/thumb/2016/0922/3e/f7db9d627c68c1ad654fc544ca4ac53e.jpeg) (http://fastpic.ru/view/78/2016/0922/f7db9d627c68c1ad654fc544ca4ac53e.png.html)
Obtained statistics:
Quote
Total units: 349
Total founded units: 244
Total units with Implimentation uses: 63
Total units in loops: 43
Total dependencies: 3697
Total dependencies in loops: 112
Implimentation uses can be move to interface in uzclog, uzcsysinfo, uzcguimanager, UGDBPoint3DArray, uzgloglstatemanager, uzeentdevice, uzeentdimension, uzcregother, uzeffttf, uzegluinterface, uzeentdimensiongeneric, uzeentdimaligned, uzcentnet, UGDBGraf, uzeentlwpolyline, uzcdevicebaseabstract, uzcdevicebase, uzcfprojecttree, uzcctrlcontextmenu, uzccommandsimpl, uzctextenteditor, zcobjectchangeundocommand2, uzcfabout, uzcfhelp, uzcctrllayercombobox, uzccomdb, uzccomdraw, uzccomdrawdase, uzeenttable, uzcprinterspecfunc, uzcentcable, uzccomelectrical, uzcentelleader, uzccablemanager, uzccomops, uzctextpreprocessorimpl, uzclibraryblocksregister;

The program began depend on several packages, so I give a link to the win32 binary https://sourceforge.net/projects/zcad/files/pugdb.7z/download

The program also uses a patched version fcl-passrc from here http://bugs.freepascal.org/view.php?id=30615
Title: Re: Visualization of Pascal program dependencies
Post by: Ñuño_Martínez on September 23, 2016, 11:57:44 am
Thanks.

A suggestion:  add the version number or the date to the name of the package file.  This will help users (like me ;)) to know what version has been downloaded.
Title: Re: Visualization of Pascal program dependencies
Post by: Thaddy on September 23, 2016, 12:47:33 pm
Thanks.

A suggestion:  add the version number or the date to the name of the package file.  This will help users (like me ;)) to know what version has been downloaded.
Oh, well,
Do that yourself, like I do.
REVSTR=<svnversion>  REVINC=force

You are not a nobody, you know how to do that. This can even be done on file level. Actually, it is used at file level with the standard makefile.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on December 21, 2016, 12:20:34 am
Hi All! Small improvements:
Added: analysis of all files in a directory by mask. (example: file=Z:\hdd\src\fpc\fpcsrc\ide\*.pas;*.pp path=Z:\hdd\src\fpc\fpcsrc\ide\)
Added: on loop graph each edges signed his "weight" (how much loops will be left if this dependence eliminated)
On test program from here http://forum.lazarus.freepascal.org/index.php/topic,35136.msg232043.html#msg232043 , it looks like attached screen

Also in report appeared recommendation to remove the dependence
Quote
The worst addiction from "uViewIntegrator" to "uRtfdDiagram" with 20
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on January 05, 2017, 11:07:31 pm
I forgot to add - result of the program can be converted to *.graphml file format. With this format you can work in a yEd vector editor, and allow the images to more visual view.

Python scripts for translation can be found here:
https://bitbucket.org/dirkbaechle/dottoxml or https://github.com/vivin/dottoxml
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on February 13, 2017, 10:18:37 am
Hi All!
Small improvements:
Add Lasarus macros support to lpi importer: Ext, Path, Name, NameOnly, MakeDir, MakeFile, TargetCPU, TargetOS, ProjOutDir, PkgDir
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on April 05, 2017, 11:35:25 pm
Hi All!
PUDGB became cross-platform!
The old Delphi package AGraph now works in Win|Lin 32|64. This is a powerful package for working with graphs.
Maybe it's useful to someone else - http://svn.shamangrad.net/zcad/trunk/cad_source/other/AGraphLaz/
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on April 25, 2017, 04:22:39 pm
Hi All! New rev.2255

Restructured settings. Added options SourceUnit and DestUnit.
Putting SourceUnit - see dependecies when they generated.
Putting DestUnit - see dependecies on it ending.
Putting both - will see how interrelated SourceUnit and DestUnit units - as on attached screenshot

http://imgur.com/a/Nyxn1
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 08, 2017, 09:48:37 pm
Hi All!

Added the possibility of "clustering" graph. Units located in the same folder are inside the cluster, the cluster name is the path to these units (slashes are replaced on the lower dash because of the features of the language graphviz)

http://imgur.com/a/Ijz08
Title: Re: Visualization of Pascal program dependencies
Post by: Ñuño_Martínez on May 09, 2017, 09:11:21 am
Just say you're doing a great job.  This tool is useful for documentation, debugging and optimization.  Keep up the good work!  :)
Title: Re: Visualization of Pascal program dependencies
Post by: jc99 on May 09, 2017, 01:43:29 pm
Hi, my compiler stops at generics.collections, does the trunk compiler support namespaces ?
[edit] and is there a workaround for 3.0.2 ?
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 09, 2017, 07:13:07 pm
Ñuño_Martínez
Thanks!

jc99
Of course it is better to use trunk, but you can compile pudgb in 3.0.2. Place https://svn.freepascal.org/svn/fpc/trunk/packages/rtl-generics/src/ (it is missing in 3.0.2) and https://svn.freepascal.org/svn/fpc/trunk/packages/fcl-passrc/src/ (there were a few important fixes) to project folder and compile.
You will also need to install the packages:
http://svn.shamangrad.net/zcad/trunk/cad_source/other/AGraphLaz/lazarus/
http://svn.shamangrad.net/zcad/trunk/cad_source/components/
Title: Re: Visualization of Pascal program dependencies
Post by: jc99 on May 10, 2017, 03:12:37 pm
Hi i made a package for both (one for each) and ... it works (Y)!
... The Yeah! - smily doesn't show ...

A small issue: the program say's Save (F2) but it only generates text, how about a SaveDialog and actual save the Data somewhere ?
[edit]
... and how about *.lpk & *.dpk files ?
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 10, 2017, 06:34:51 pm
The attached packages are missing sources files. Also I don't think it is necessary to do the package fcl-passrc, it is in 3.0.2, though it contains more errors than the one in the trunk

>>A small issue: the program say's Save (F2) but it only generates text, how about a SaveDialog and actual save the Data somewhere ?

I prefer the web version graphwiz, so I'd better copy and paste)) But even if you want save data - save dialog easy to add. Much more interesting to make on your own display graph

>>... and how about *.lpk & *.dpk files ?
Maybe, but I won't be able to do it soon
In addition: patches and commits are very welcome))
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 15, 2017, 11:27:23 pm
Hi All!
Add 'Include to graph' and 'Exclude from graph' parameters (can be masks), for filtering units names in result graph.
In DestUnit and SourceUnit parameters also now allowed masks.

This is all basic features who I wanted to implement. Сhange the version number from 0.1 to 0.99
Title: Re: Visualization of Pascal program dependencies
Post by: jc99 on May 16, 2017, 01:15:18 am
The attached packages are missing sources files. Also I don't think it is necessary to do the package fcl-passrc, it is in 3.0.2, though it contains more errors than the one in the trunk

of cause they do or don't, the source files are in the fpc-trunk-folder. That's why I made those files, that way i can explicitly use the trunc version.
If you don't call it "save" instead call it "generate" and "generate gml" then I'm happy too. And maybe some newbies are less confused.
Greetings (and a BIG Thumb-Up from my side)
 _
|  )
|  |_
|   _)
|    _)
|   _)
\__)
WTG, well done.

PS: Here's a Patch, naming some components, and redirect the output to a separate folder. -> less cleanup-work to do, and more-easy to secure. I drive a stict security-System (WanaCry-Save) only the compiler is allowed to write into the bin-(&sub)-folder, and only executables in the bin-(&sub) folders are allowed to run.
see restric'tor or SRP
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 16, 2017, 03:42:19 am
Applied with a few changes: remove your packages rtl-generics and fcl-passrc - in the trunk they're not needed, fix binary path from ../../bin/ to bin/

Thanks!
Title: Re: Visualization of Pascal program dependencies
Post by: jc99 on May 16, 2017, 10:56:38 am
Hi zamtmn,
the "../../bin" was to show the concept for me it's actual "../../../../bin" so that binaries from all projects go to that path and the user-rights and SRP-rules have only to be set once.

BTW: Did your code compile ?
The name of the buttons don't go together: in the .pas it's btnXXX and in the .lfm  it's ToolbuttonX.

BTW2: Are the translations correct, since I don't speak russian, I used bing-translate.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 16, 2017, 01:45:39 pm
I don't think we need to go above the folder PUDGB, who knows what will be there the person download the source code. You can move the binary anywhere you want, but it is not necessary to contribute inrepository.

Yes, button names were different, very strange that it compiled without problems. Fixed, thanks!

Comments in russian can be erased, initially the project was supposed to be another one, these comments I did for him. The manger need some moments I can comment in detail now. In the future I will comment on all
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 20, 2017, 02:42:36 am
Hi All!

Started doing the vector graph renderer. As graph layout I plan to use graphviz (dll or exe), get svg data from it, and draw them. Will use ZCAD engine, so now even more dependencies((
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on May 22, 2017, 10:51:30 pm
Hi All!

First working vizualizer prototype: http://imgur.com/a/yQ0tl yet without dashes and without beziers
But unfortunately lazarus doesn't have a good svg reader. I tried to make my own implementation, SVG is bad format((
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on October 05, 2017, 11:41:37 am
Hi All!

New version  - rev2386.
Build with last fcl-passrc (include many fixes). Reorganize options, add new options -  "Collapse clusters mask" and "Expand clusters mask"
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on August 25, 2018, 09:51:00 pm
Project move to https://github.com/zamtmn/pudgb
Title: Re: Visualization of Pascal program dependencies
Post by: Leledumbo on August 26, 2018, 09:06:25 pm
Project move to https://github.com/zamtmn/pudgb
You forgot the dependencies.
Title: Re: Visualization of Pascal program dependencies
Post by: taazz on August 26, 2018, 11:00:29 pm
Project move to https://github.com/zamtmn/pudgb (https://github.com/zamtmn/pudgb)
You forgot the dependencies.
the zxxxx packages can be found on the cad repo (https://github.com/zamtmn/zcad/tree/master/cad_source/components) the ag_xxxx packages I have no idea.
Title: Re: Visualization of Pascal program dependencies
Post by: wp on August 26, 2018, 11:14:24 pm
the ag_xxxx packages I have no idea.
They are in cad_source/other/AGraphLaz/lazarus. And you need fpc trunk to compile.
Title: Re: Visualization of Pascal program dependencies
Post by: taazz on August 26, 2018, 11:26:42 pm
the ag_xxxx packages I have no idea.
They are in cad_source/other/AGraphLaz/lazarus.
Nice! thank you.

And you need fpc trunk to compile.
which part? From the readme seems that the library has a long history (delphi 1..7, fpc 1 etc) and can that part be disabled?
I'm not using trunk and I have found no reason to change my policy so far.
Title: Re: Visualization of Pascal program dependencies
Post by: wp on August 26, 2018, 11:43:07 pm
And you need fpc trunk to compile.
which part? From the readme seems that the library has a long history (delphi 1..7, fpc 1 etc) and can that part be disabled?
I'm not using trunk and I have found no reason to change my policy so far.
ztoolbars need generics. fpc 3.0.4 got stuck here. With fpc-trunk it did compile.
Title: Re: Visualization of Pascal program dependencies
Post by: taazz on August 26, 2018, 11:45:31 pm
And you need fpc trunk to compile.
which part? From the readme seems that the library has a long history (delphi 1..7, fpc 1 etc) and can that part be disabled?
I'm not using trunk and I have found no reason to change my policy so far.
ztoolbars need generics. fpc 3.0.4 got stuck here. With fpc-trunk it did compile.
oh ok, are they used in the Dependency Graph Builder? as far as I can say from the lpi (did not download it my self) there is no direct link to the ztoolbars.
Title: Re: Visualization of Pascal program dependencies
Post by: wp on August 27, 2018, 12:31:40 am
Ah probably you are right. I just compiled all packages without looking.

[EDIT] No, uwriter of the dependency project needs generics, too.
Title: Re: Visualization of Pascal program dependencies
Post by: taazz on August 27, 2018, 03:16:04 am
Ah probably you are right. I just compiled all packages without looking.

[EDIT] No, uwriter of the dependency project needs generics, too.
thanks for the heads up.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on August 27, 2018, 04:54:19 pm
Sorry, I haven't cleaned up packages yet. As already said, everything you need is in a nearby repository:

https://github.com/zamtmn/zcad/tree/master/cad_source/components (my packages)
https://github.com/zamtmn/zcad/tree/master/cad_source/other (third party packages)

I added a binary for Win32 https://github.com/zamtmn/pudgb/releases/download/0.99/pudgb_0_99_win32.7z
Later i can add for Linux x86, if you're interested
Title: Re: Visualization of Pascal program dependencies
Post by: Thaddy on August 27, 2018, 05:04:28 pm
[ztoolbars need generics. fpc 3.0.4 got stuck here. With fpc-trunk it did compile.
well, rtl-generics for 3.0.4 IS in OPM...
Maybe OPM needs a dependency feature.
Well actually it does anyway, because it has platform problems. You can actually try to install a package that is not suited for the platform.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on February 09, 2022, 07:10:48 am
Minor improvements and prerelease 0.99.2

- HiDPI support
- Set default path to Lazarus configs
- I didn't understand how to pass the po_IgnoreUnknownResource flag to the scanner, so I built a binary with a modified latest fcl-passrc, resource inclusions are ignored
- Attach dottoxml archive (useful for exporting to Yed)

https://github.com/zamtmn/pudgb/releases/tag/0.99.2
Title: Re: Visualization of Pascal program dependencies
Post by: PascalDragon on February 09, 2022, 08:57:37 am
- I didn't understand how to pass the po_IgnoreUnknownResource flag to the scanner, so I built a binary with a modified latest fcl-passrc, resource inclusions are ignored

You should create a bug report then.
Title: Re: Visualization of Pascal program dependencies
Post by: zamtmn on January 06, 2023, 08:12:16 am
Version 0.99.3
-slightly reorganized options
-added "Directly uses" - only units with "Dest unit" in their uses get into the graph
-saving/loading program/project options

https://github.com/zamtmn/pudgb/releases/tag/0.99.3
TinyPortal © 2005-2018