Hello Matthew, Please see inline
2017-06-30 11:57 GMT+02:00 Matthew Pickering <[email protected]>: > Hi Robin, > > This looks really useful for developers. > > 1. Would it be possible to provide a script which allows developers to > build this index for themselves easily? > First, build and install the `ghc_kythe_wrapper` (instructions at https://github.com/google/haskell-indexer). Then build GHC with `make`, and capture the build log. Here's the hacky script I used: https://gist.github.com/robinp/222cf3a39cc19178ec8691522056d7fe It filters the log and replaces GHC calls to call the wrapper, which emits Kythe entries. Finally run `serve.sh` of the repo to postprocess and serve the entries through HTTP. This is all pretty new, so feedback or questions welcome. If the method distills, could try to write a more formal guide. > 2. Is it possible to use this tool to detect dead code? Functions > which are not used anywhere in the compiler. > We'll get there eventually, but for now the emitted data is not fine-grained enough. The main missing piece is recording what are exported entities of a module (Kythe schema discussion in progress). Without this, unused locals (which anyway surface with -Wall) would be presented and noisy. Also, one would probably need to postprocess the data a bit for this, like loading into a graph database or other ways. Did you see https://github.com/ndmitchell/weeder by the way? Might work. > 3. How are you pretty printing the output whilst retaining the source > formatting? I had a quick look at the source but I couldn't see where > the output was being produced. > > The haskell-indexer-frontend-kythe emits Kythe (http://kythe.io) schema data. We just export the source offsets, and it's the Kythe postprocessing / serving pipeline that does all the formatting. > Cheers, > > Matt > > On Fri, Jun 30, 2017 at 8:55 AM, Robin Palotai <[email protected]> > wrote: > > Hello GHC devs, > > > > I ran haskell-indexer [1] on the GHC 8.0.2 tarball, partly because I find > > myself reading GHC source from time to time while working on the indexer, > > and partly since it's fun. > > > > First, here you can click around [2] and find where beloved functions are > > called from: > > http://stuff.codereview.me/#ghc/compiler/hsSyn/HsBinds.hs? > corpus&signature > > (scroll down a bit, imports are not linked yet). > > > > Second, the way I indexed was pretty simple. I took the output of `make`, > > replaced the ghc used with the ghc_kythe_wrapper, and filtered the lines > > which included '-c', since I noticed that those duplicate previous large > > compile lines. This only indexes the stage1 compilation AFAIU. > > > > Feel free to suggest a better way to tap into the compilations to get > > everything properly indexed (and possibly only once). > > > > Any comments welcome! > > Robin > > > > [1]: https://github.com/google/haskell-indexer > > > > [2]: TLDR UI quirks: > > - Click the :: in top-left to navigate file tree > > - Ctrl-Click (on linux) to go directly to definition (otherwise click > > stuff from bottom pane) > > - Bottom pane often hides content, close it if stuck. > > > > _______________________________________________ > > ghc-devs mailing list > > [email protected] > > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > > >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
