Home | History | Annotate | only in /prebuilts/tools/linux-x86_64/kythe
Up to higher level directory
NameDateSize
extractors/05-Oct-2017
indexers/05-Oct-2017
LICENSE05-Oct-201711.1K
proto/05-Oct-2017
README.google05-Oct-2017497
README.md05-Oct-20176.6K
RELEASES.md05-Oct-20177.7K
studio/05-Oct-2017
third_party/05-Oct-2017
tools/05-Oct-2017
web/05-Oct-2017

README.google

      1 URL: https://github.com/google/kythe/releases/download/v0.0.23/kythe-v0.0.23.tar.gz
      2 Version: 0.0.23
      3 License: Apache 2.0
      4 License File: LICENSE
      5 
      6 Description:
      7 Kythe is a pluggable, (mostly) language-agnostic ecosystem for building
      8 tools that work with code. https://kythe.io
      9 
     10 Local Modifications:
     11 -added extractors/BUILD and extractors/vnames.json
     12 -patched in https://github.com/google/kythe/commit/bd502d99c0605f52bb268e109598487327abaceb
     13 -added scripts to studio/ to run kythe over Android Studio.
     14 

README.md

      1 *WARNING:* Kythe is alpha.  Use at your own risk.
      2 
      3 Kythe is a pluggable, (mostly) language-agnostic ecosystem for building tools
      4 that work with code.  This release contains the core set of indexers,
      5 extractors, and tools directly supported by the Kythe team.
      6 
      7 *License:* Apache Licence, Version 2.0
      8 
      9 # Contents
     10  - indexers
     11    - cxx_indexer              :: C++ indexer
     12    - java_indexer.jar         :: Java indexer
     13  - extractors
     14    - bazel_cxx_extractor      :: C++ extractor for Bazel extra_actions
     15    - bazel_java_extractor.jar :: Java extractor for Bazel extra_actions
     16    - cxx_extractor            :: C++ extractor
     17    - javac_extractor.jar      :: Java extractor
     18    - javac-wrapper.sh         :: javac wrapper script for extractor
     19  - proto                      :: Protocol buffer definitions of public APIs
     20  - tools
     21    - dedup_stream             :: Removes duplicates entries from a delimited stream
     22    - directory_indexer        :: Emits Kythe file nodes for some local paths
     23    - entrystream              :: Generic Kythe entry stream processor
     24    - http_server              :: HTTP/GRPC server for Kythe service APIs (xrefs, filetree, search)
     25    - indexpack                :: Converts between .kindex archives and indexpacks
     26    - kwazthis                 :: Determine what Kythe node(s) are at a particular point in a file
     27    - kythe                    :: CLI for the service APIs exposed by http_server
     28    - read_entries             :: Dumps a GraphStore's contents as an entry stream
     29    - triples                  :: Converts an entry stream (or GraphStore) to N-Triples
     30    - verifier                 :: Verifies indexer outputs with source-inlined goals
     31    - viewindex                :: Dumps a .kindex file as JSON
     32    - write_entries            :: Writes an entry stream to a GraphStore
     33    - write_tables             :: Processes a GraphStore into efficient serving tables for http_server
     34 
     35 # Dependencies
     36  - Java JDK >=8
     37  - libncurses
     38  - libuuid
     39 
     40 ## Debian Jessie Install
     41 
     42     echo "deb http://http.debian.net/debian jessie-backports main" >> /etc/apt/sources.list
     43     apt-get install openjdk-8-jdk libncurses5 libssl1.0.0
     44 
     45 # End-to-end Java Example
     46 
     47 ```
     48 # Install Kythe
     49 tar xzf kythe-v*.tar.gz
     50 rm -rf /opt/kythe
     51 mv kythe-v*/ /opt/kythe
     52 
     53 git clone https://github.com/GoogleCloudPlatform/DataflowJavaSDK.git
     54 cd DataflowJavaSDK
     55 
     56 # Setup the Java extractor's environment
     57 export REAL_JAVAC="$(which javac)"
     58 export JAVAC_EXTRACTOR_JAR=/opt/kythe/extractors/javac_extractor.jar
     59 export KYTHE_ROOT_DIRECTORY="$PWD"
     60 export KYTHE_OUTPUT_DIRECTORY="/tmp/kythe"
     61 export KYTHE_CORPUS=DataflowJavaSDK
     62 mkdir -p "$KYTHE_OUTPUT_DIRECTORY"
     63 
     64 # Force Maven to compile with extractors/javac-wrapper.sh
     65 mvn clean compile \
     66   -Dmaven.compiler.forceJavacCompilerUse=true \
     67   -Dmaven.compiler.fork=true \
     68   -Dmaven.compiler.executable=/opt/kythe/extractors/javac-wrapper.sh
     69 
     70 cd ..
     71 
     72 # Index the resulting .kindex files, deduplicate the entries, and finally store
     73 # them in a GraphStore
     74 GRAPHSTORE=/tmp/kythe_graphstore
     75 rm -rf "$GRAPHSTORE"
     76 find "$KYTHE_OUTPUT_DIRECTORY" -name '*.kindex' | \
     77   xargs -L1 java -jar /opt/kythe/indexers/java_indexer.jar | \
     78   /opt/kythe/tools/dedup_stream | \
     79   /opt/kythe/tools/write_entries --graphstore $GRAPHSTORE
     80 
     81 # Process the GraphStore into serving tables
     82 SERVING=/tmp/kythe_serving
     83 rm -rf "$SERVING"
     84 /opt/kythe/tools/write_tables --graphstore $GRAPHSTORE --out "$SERVING"
     85 
     86 # Launch Kythe's service APIs as an HTTP server listening to only local
     87 # connections on port 9898.  Using `--listen :9898` instead will allow
     88 # connections from other networked machines.
     89 /opt/kythe/tools/http_server --serving_table "$SERVING" \
     90   --public_resources /opt/kythe/web/ui --listen localhost:9898
     91 
     92 # The sample web UI will be serving at http://localhost:9898
     93 
     94 # /opt/kythe/tools/kythe and /opt/kythe/tools/kwazthis can be used with the
     95 # local running server by passing the '--api=http://localhost:9898' flag.
     96 ```
     97 
     98 # Usage
     99 
    100 ## Extractors
    101 
    102 `extractors/cxx_extractor` and `extractors/javac_extractor.jar` are
    103 flag-compatible replacements for clang and javac, respectively.  Instead of
    104 performing a full compilation, they extract the compilation's full context
    105 including all file inputs and archive them in a .kindex file.
    106 
    107 Since each extractor is meant to replace a compiler, all configuration is passed
    108 by the following environment variables:
    109 
    110     KYTHE_ROOT_DIRECTORY (required): root directory of the repository being compiled.
    111         This helps the extractor correctly infer file input paths.
    112     KYTHE_OUTPUT_DIRECTORY (required): output directory for resulting .kindex
    113         files
    114     KYTHE_VNAMES: path to a JSON-encoded VNames configuration file.  See
    115         https://godoc.org/github.com/google/kythe/kythe/go/storage/vnameutil for
    116         more details on the file's format and
    117         https://kythe.io/repo/kythe/data/vnames.json for an example.
    118     KYTHE_CORPUS: the name of the corpus for all constructed VNames (only used if
    119         KYTHE_VNAMES is unset; defaults to "kythe")
    120 
    121 `extractors/javac-wrapper.sh` is provided as one way to inject an extractor into
    122 a build system -- by wrapping each compiler command.  For instance, Maven
    123 compilations can easily be extracted by replacing `$JAVA_HOME/bin/javac` with
    124 this script and setting the following Maven options:
    125 
    126     -Dmaven.compiler.forceJavacCompilerUse=true
    127     -Dmaven.compiler.fork=true
    128     -Dmaven.compiler.executable=$JAVA_HOME/bin/javac
    129 
    130 Read `extractors/javac-wrapper.sh` for more details on its usage and see
    131 examples usages in the Docker images defined at
    132 https://kythe.io/repo/kythe/java/com/google/devtools/kythe/extractors/java/standalone/Dockerfile
    133 and
    134 https://kythe.io/repo/kythe/java/com/google/devtools/kythe/extractors/java/maven/Dockerfile.
    135 
    136 ### Examples:
    137 
    138     export KYTHE_ROOT_DIRECTORY="$PWD"
    139     export KYTHE_OUTPUT_DIRECTORY=/tmp/kythe
    140 
    141     mkdir -p "$KYTHE_OUTPUT_DIRECTORY"
    142 
    143     java -Xbootclasspath/p:extractors/javac_extractor.jar \
    144       -jar extractors/javac_extractor.jar \
    145       -cp "${$(find third_party -name '*.jar' -printf '%p:')%:}" \
    146       $(find src/main -name '*.java')
    147 
    148     extractors/cxx_extractor -Ithird_party/include some.cc
    149 
    150 ## Indexers
    151 
    152 `indexers/cxx_indexer` and `indexers/java_indexer.jar` analyze the .kindex files
    153 produced by the extractors and emit a stream of protobuf wire-encoded facts
    154 (entries) that conform to https://kythe.io/schema.  The output stream can be
    155 processed by many of the accompanying binaries in the tools/ directory.
    156 
    157 ### Examples
    158 
    159     java -jar indexers/java_indexer.jar \
    160       /tmp/kythe/065c7a9a0789d09b73d74b0ca17cfcec6643d69a6218d095d19a770b10dffdf9.kindex \
    161       > java.entries
    162 
    163     indexers/cxx_indexers \
    164       /tmp/kythe/579d266e5914257a9bd4458eb9b218690280ae15123d642025f224d10f64e6f3.kindex \
    165       > cxx.entries
    166