home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / c / 12334 < prev    next >
Encoding:
Internet Message Format  |  1992-08-14  |  1.9 KB

  1. Path: sparky!uunet!ferkel.ucsb.edu!taco!gatech!swrinde!elroy.jpl.nasa.gov!news.claremont.edu!ucivax!megatek!tomw
  2. From: tomw@stephanie.megatek.uucp (Tom Wright)
  3. Newsgroups: comp.lang.c
  4. Subject: need tool to eliminate unused #include's
  5. Message-ID: <1992Aug14.170926.6875@megatek.uucp>
  6. Date: 14 Aug 92 17:09:26 GMT
  7. Sender: tomw@megatek.uucp (Tom Wright)
  8. Organization: Megatek Corporation, San Diego, California
  9. Lines: 30
  10.  
  11. Over time, programmers tend to add #include's but never remove them,
  12. regardless of if they're still needed. It's just too difficult to see
  13. if they're still needed. Ultimately, in a large system, this causes
  14. 'make' or 'Imake' to do many needless recompiles if dependencies are
  15. used. Not using dependencies causes many wasted hours of looking for
  16. bugs that aren't really there.
  17.  
  18. Does anyone know of a tool that figures out if any of the #include's
  19. in a module are no longer needed?
  20.  
  21. It has been suggested that one could selectively remove #include's and
  22. try recompiling and looking for no errors, but this is unsatisfactory
  23. in that the use of -D on the compile command line could make an #include
  24. that had appeared unneeded in a previous compile now become needed.
  25.  
  26. I imagine the tool would have to build a list of each thing that I'll
  27. call a symbol that is defined in a #define, a typedef, or a struct (or
  28. a few other things I haven't thought of yet) and which .h it's defined
  29. in (ignoring #ifdef's and #ifndef's). Then it would have to keep track
  30. of which .h's they're used in and which symbols they're used in. Ultimately,
  31. it would check the module source to see what gets used. To create the 
  32. final answer, it would need to check all the symbols in each .h to see
  33. if any of them were ultimately used in the source or in a .h that had
  34. a symbol that got used.
  35.  
  36. Creating such a processor would be non-trivial, but the productivity
  37. gain could be very large. Does anyone have such a thing?
  38.  
  39. Thanks,
  40. Tom
  41.