www.digitalmars.com         C & C++   DMDScript  

D - The dependency checker

reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
Has changed name to
ddepcheck
and can be found at
http://www.igesund.net/larsivar/ddepcheck.d

Some minor bugs has been fixed.

Lars Ivar Igesund
Oct 31 2003
next sibling parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
Newest version (0.8.5) uploaded today now supports dmd 0.75, but
not the olders (in terms of not looking at phobos dependencies as real
dependencies.) Also, text like "private important" in comments should no
longer cause difficulties as comments should be removed before analysis.
I think it is fairly robust now...

It still don't handle multiple input files very well though. I'm not sure
that
the feature has any real use. In the settings where I use it, the output is
piped to a file per input file anyway and then multiple input files would
just muck up. Comments or wishes on that?

Lars Ivar Igesund

"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message
news:bnt6e3$1624$1 digitaldaemon.com...
 Has changed name to
 ddepcheck
 and can be found at
 http://www.igesund.net/larsivar/ddepcheck.d

 Some minor bugs has been fixed.

 Lars Ivar Igesund

Nov 05 2003
parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
And then is 0.8.6 up.

Lars Ivar Igesund

"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message
news:boafod$1r7d$1 digitaldaemon.com...
 Newest version (0.8.5) uploaded today now supports dmd 0.75, but
 not the olders (in terms of not looking at phobos dependencies as real
 dependencies.) Also, text like "private important" in comments should no
 longer cause difficulties as comments should be removed before analysis.
 I think it is fairly robust now...

 It still don't handle multiple input files very well though. I'm not sure
 that
 the feature has any real use. In the settings where I use it, the output

 piped to a file per input file anyway and then multiple input files would
 just muck up. Comments or wishes on that?

 Lars Ivar Igesund

 "Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message
 news:bnt6e3$1624$1 digitaldaemon.com...
 Has changed name to
 ddepcheck
 and can be found at
 http://www.igesund.net/larsivar/ddepcheck.d

 Some minor bugs has been fixed.

 Lars Ivar Igesund


Nov 05 2003
next sibling parent reply Ant <Ant_member pathlink.com> writes:
In article <boakrq$22bs$1 digitaldaemon.com>, Lars Ivar Igesund says...
And then is 0.8.6 up.

Lars Ivar Igesund

I have 6 imports: module dui.ObjectG; private import dui.Utils; private import def.Types; private import std.gc; private import std.string; private import dui.OGTK; private import ddi.Value; ./../ddepcheck -I/dmd/src/phobos dui/ObjectG.d gives me: # dui/ObjectG.d ## dui.Utils dui/Utils.d 1 std.gc /dmd/src/phobos/std/gc.d 1 dui.OGTK dui/OGTK.d 1 ddi.Value ddi/Value.d 1 I changed the phobos array to empty. I don't think this is the expected result!... Ant
Nov 07 2003
parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
Thanks for the report! I had a stupid bug in my comment stripping function.
Version 0.9.0 is now up and seems correct for my version of ObjectG that
is not the same as you have, but it showed the same problems.

Also, I have added the switch -l/--checkruntimelib that also look at phobos
for dependencies. (It will crash if the correct path isn't supplied, but
that is
a feature :).

Lars Ivar Igesund


"Ant" <Ant_member pathlink.com> wrote in message
news:bohnc0$878$1 digitaldaemon.com...
 In article <boakrq$22bs$1 digitaldaemon.com>, Lars Ivar Igesund says...
And then is 0.8.6 up.

Lars Ivar Igesund

I have 6 imports: module dui.ObjectG; private import dui.Utils; private import def.Types; private import std.gc; private import std.string; private import dui.OGTK; private import ddi.Value; ./../ddepcheck -I/dmd/src/phobos dui/ObjectG.d gives me: # dui/ObjectG.d ## dui.Utils dui/Utils.d 1 std.gc /dmd/src/phobos/std/gc.d 1 dui.OGTK dui/OGTK.d 1 ddi.Value ddi/Value.d 1 I changed the phobos array to empty. I don't think this is the expected result!... Ant

Nov 08 2003
next sibling parent reply Ant <Ant_member pathlink.com> writes:
In article <boikkq$1jvo$1 digitaldaemon.com>, Lars Ivar Igesund says...

I made some changes (0.74) as suggestions (see attachment) (r for renamed) ./../rdepcheck -I/dmd_0.75/src/phobos dui/DUI.d dui/ObjectG.d will product: dui/DUI.d | def/Types.d | | std/string.d | | | std/c/stdio.d | def/Constants.d | dui/Utils.d | std/string.d | | std/c/stdio.d | std/thread.d | dui/SListG.d | dui/ListG.d | event/Event.d dui/ObjectG.d | dui/Utils.d | def/Types.d | | std/string.d | | | std/c/stdio.d | def/Constants.d | std/string.d | | std/c/stdio.d | std/gc.d | | gcstats.d | dui/OGTK.d | ddi/Value.d it's not even right as ddi/Value.d has imports and they don't show. if I'm gonna use it on leds I need some funtion like public DepStruct getImports(char[] name) that's also suggesting on the attachment. the attachment is barely more then pseudo code, so no acknowleagments are necessary if you decide to recode or clean up the suggestions. Ant
Nov 08 2003
parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
"Ant" <Ant_member pathlink.com> wrote in message
news:bojbs3$2koa$1 digitaldaemon.com...
 In article <boikkq$1jvo$1 digitaldaemon.com>, Lars Ivar Igesund says...

I made some changes (0.74) as suggestions (see attachment) (r for renamed) ./../rdepcheck -I/dmd_0.75/src/phobos dui/DUI.d dui/ObjectG.d will product: dui/DUI.d | def/Types.d | | std/string.d | | | std/c/stdio.d | def/Constants.d | dui/Utils.d | std/string.d | | std/c/stdio.d | std/thread.d | dui/SListG.d | dui/ListG.d | event/Event.d dui/ObjectG.d | dui/Utils.d | def/Types.d | | std/string.d | | | std/c/stdio.d | def/Constants.d | std/string.d | | std/c/stdio.d | std/gc.d | | gcstats.d | dui/OGTK.d | ddi/Value.d it's not even right as ddi/Value.d has imports and they don't show.

It's correct for my version. the imports in ddi/value.d are private, thus ObjectG.d don't depend on them and IMO that is correct behaiour. If you don't agree with me, I'll add the option to include private imports as dependencies.
 if I'm gonna use it on leds I need some funtion like
 public DepStruct getImports(char[] name)
 that's also suggesting on the attachment.

I'll think about this, but it would make ddepcheck to a library routine. I might do that at some time, but I need it as an app that outputs to stdout. Lars Ivar Igesund
Nov 09 2003
parent reply Ant <Ant_member pathlink.com> writes:
In article <bol6c0$22c3$1 digitaldaemon.com>, Lars Ivar Igesund says...
It's correct for my version. the imports in ddi/value.d are private, thus
ObjectG.d don't depend on them and IMO that is correct behaiour.

You right!
If you don't agree with me, I'll add the option to include private imports
as dependencies.

That would be a nice feature. Might help straightening the dmd import problems. (ok, the mess might be on DUI but at least dmd has problems reporting it)
 if I'm gonna use it on leds I need some funtion like
 public DepStruct getImports(char[] name)
 that's also suggesting on the attachment.

I'll think about this, but it would make ddepcheck to a library routine. I might do that at some time, but I need it as an app that outputs to stdout.

I didn't think one would excludes the other (?)... (oh, you mean the main function must be removed? how about version(ddepcheckLIB){}else{main...}) Any way you cut it the print routine shouldn't be on the main function. (I my opinion) Ant
Nov 09 2003
parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
"Ant" <Ant_member pathlink.com> wrote in message .
 I didn't think one would excludes the other (?)...
 (oh, you mean the main function must be removed?
 how about version(ddepcheckLIB){}else{main...})

Also I would make the switches to 'set' methods instead. I'll rather make another file :)
 Any way you cut it the print routine shouldn't be on the main function.
 (I my opinion)

A matter of taste, but I might do it. (They are only 3 lines each.) Lars Ivar Igesund
Nov 09 2003
parent reply Ant <Ant_member pathlink.com> writes:
In article <bomhpr$1agg$1 digitaldaemon.com>, Lars Ivar Igesund says...
 Any way you cut it the print routine shouldn't be on the main function.
 (I my opinion)

A matter of taste, but I might do it.

I'm glad we don't work on the same projects... ;) (I give hell to my coleagues for things like that)
 (They are only 3 lines each.)

each!? you mean you have duplicated code?! ;) (I give hell to my coleagues for things like that) :) Ant
Nov 09 2003
parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
"Ant" <Ant_member pathlink.com> wrote in message
news:bomiks$1blk$1 digitaldaemon.com...
 In article <bomhpr$1agg$1 digitaldaemon.com>, Lars Ivar Igesund says...
 Any way you cut it the print routine shouldn't be on the main function.
 (I my opinion)

A matter of taste, but I might do it.

I'm glad we don't work on the same projects... ;) (I give hell to my coleagues for things like that)

Any special reason?
 (They are only 3 lines each.)

each!? you mean you have duplicated code?! ;)

No, there's two ways to print out the deps. Lars Ivar Igesund
Nov 09 2003
parent Ant <Ant_member pathlink.com> writes:
In article <bondjc$2g2q$1 digitaldaemon.com>, Lars Ivar Igesund says...
A matter of taste, but I might do it.

I'm glad we don't work on the same projects... ;) (I give hell to my coleagues for things like that)

Any special reason?

2 bigies: - maintainability. - reusability.
 each!? you mean you have duplicated code?! ;)

No, there's two ways to print out the deps.

(1) depfile.printf(depmods[i] ~ " " ~ depfiles[i] ~ " " ~ depdepths[i] ~ "\n"); (2) I thought we could do: stdout.printf(toStringz(depmods[i] ~ " " ~ depfiles[i] ~ " " ~ depdepths[i] ~ "\n")); or something like that. Ant
Nov 10 2003
prev sibling parent Ant <Ant_member pathlink.com> writes:
here it is...
Nov 08 2003
prev sibling parent Ant <Ant_member pathlink.com> writes:
In article <boakrq$22bs$1 digitaldaemon.com>, Lars Ivar Igesund says...
And then is 0.8.6 up.

Lars Ivar Igesund

Sorry, just realize that blank lines make a diff. what I had was: private import dui.Utils; private import def.Types; private import std.gc; private import std.string; private import dui.OGTK; private import ddi.Value; I changed it to: private import dui.Utils; private import def.Types; private import std.gc; private import std.string; private import dui.OGTK; private import ddi.Value; and now I get: # dui/ObjectG.d ## dui.Utils dui/Utils.d 1 def.Constants def/Constants.d 2 def.Types def/Types.d 1 std.string /home/ruimt/dmd/src/phobos/std/string.d 1 ddi.Value ddi/Value.d 1 which still doesn't seem the expected output. Ant
Nov 07 2003
prev sibling next sibling parent reply "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
Version 0.9.2 is now up.
Some code was moved out of main (courtesy of Ant).
A switch -p/--checkprivate was added. This will make
the app search through private imports too (for
diagnostic use only.)
I also fixed it so that infinite recursion is now impossible.
Also, it makes the search faster.

Also, the first iteration of ddepchecklib.d is up at
http://www.igesund.net/larsivar/ddepchecklib.d

The module has a struct
ddepcheck with the following functions:

  void setCheckRuntime(bool value)
  void setCheckPrivate(bool value)
  void setSearchDepth(int newdepth)
  void addImportPath(char [] path)
  DepStruct getDeps(char [] file)

The DepStruct looks like this:

export
struct DepStruct {

  char [] filename;
  char [] modname;
  int [] depths;
  int numdeps;
  DepStruct [] dependencies;
}

I haven't tested this, so I expect it to have errors
all over the place (also I'm not very used to structs,
so I expect it to sport access violations like no other app.)

Lars Ivar Igesund
Nov 12 2003
parent "Lars Ivar Igesund" <larsivi stud.ntnu.no> writes:
And version 0.9.3. Two small buglets were fixed
(one for dependency paths and one for "//" comments.)

Lars Ivar Igesund

"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message
news:bostke$1n75$1 digitaldaemon.com...
 Version 0.9.2 is now up.

Nov 12 2003
prev sibling parent "Lars Ivar Igesund" <larsivar igesund.net> writes:
Version 0.9.4 is up. Only change is support for dmd 0.76 instead of previous
versions.

Lars Ivar Igesund

"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message
news:bnt6e3$1624$1 digitaldaemon.com...
 Has changed name to
 ddepcheck
 and can be found at
 http://www.igesund.net/larsivar/ddepcheck.d

 Some minor bugs has been fixed.

 Lars Ivar Igesund

Nov 28 2003