测试使用docker 部署

docker-compose文件

注意网络模型选择的host,同时配置了opentracing 服务

version: "3"
services:
  bblfsh:
    image: bblfsh/bblfshd
    privileged: true
    environment:
    - "JAEGER_AGENT_HOST=localhost"
    - "JAEGER_AGENT_PORT=6831"
    - "JAEGER_SAMPLER_TYPE=const"
    - "JAEGER_SAMPLER_PARAM=1"
    network_mode: "host"
    ports:
    - "9432:9432"
    volumes:
    - "/var/lib/bblfshd:/var/lib/bblfshd"
    - "/var/run/docker.sock:/var/run/docker.sock"
  jaeger:
    image: jaegertracing/all-in-one:1.8
    ports:
    - "5775:5775/udp"
    - "6831:6831/udp"
    - "6832:6832/udp"
    - "5778:5778"
    - "16686:16686"
    - "14268:14268"
    - "9411:9411"
 
 

安装驱动

对于语言解析处理的docker 镜像,inside 容器,为了简单,添加的只有golang 的
如果网络比较好的话,可以安装所有的,使用--all参数,或者推荐的 --recommended

 
bblfshctl driver install docker://bblfsh/go-driver:latest

解析 golang 语言

inside 容器,因为按照其他语言的驱动有点慢,所以自己copy 一个golang 代码文件到容器,同时
只安装了简单的golang driver

  • 准备golang 代码
    main.go
 
package main
import "fmt"
func main() {
 fmt.Println("demoapp")
}
 
 

拷贝文件
注意修改为自己的容器id

<wiz_code_mirror>

 
 
 
 
 
docker cp main.go 4116cc1ee650:/opt/
 
 
  • 指定解析
bblfshctl parse /opt/main.go
  • 生成的代码ast 解析
    比较多,保留部分
 
Status: Ok
Elapsed: 1.099302113s
Module {
. Roles: File,Module
. Children: {
. . 0: Expr {
. . . Roles: Expression
. . . StartPosition: {
. . . . Offset: 0
. . . . Line: 1
. . . . Col: 1
. . . }
. . . Properties: {
. . . . internalRole: body
. . . }
. . . Children: {
. . . . 0: Call {
. . . . . Roles: Function,Call,Expression
. . . . . StartPosition: {
. . . . . . Offset: 0
. . . . . . Line: 1
. . . . . . Col: 1
. . . . . }
. . . . . Properties: {
. . . . . . internalRole: value
. . . . . }
. . . . . Children: {
. . . . . . 0: Name {
. . . . . . . Roles: Identifier,Expression,Call,Callee
. . . . . . . TOKEN "print"
. . . . . . . StartPosition: {
. . . . . . . . Offset: 0
. . . . . . . . Line: 1
. . . . . . . . Col: 1
. . . . . . . }
。。。。
 
 
  • opentracing 统计分析
    不同driver 的请求

    golang 解析的请求链路

说明

Babelfish 的功能很强大, 对于我们分析代码是很方便的,同时生产环境,建议的方式是使用client 调用grpc 服务,同时官方也提供了
一个web 的dashboard ,方便我们测试

参考资料

https://doc.bblf.sh/using-babelfish/advanced-usage.html

Babelfish 基本试用的更多相关文章

  1. SharePoint Online 申请试用链接地址

    SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...

  2. 活动助手Beta用户试用报告

    用户试用报告 1.面向参与者用户 1.1 日常参加各类学习(水综测)活动中,有没有遇到以下问题: (1) 信息来源混乱,不知道靠不靠谱 (2) 每次报名都要重新填写自己的学号手机号,有时候填错了就没综 ...

  3. 创建WP8试用应用

    参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...

  4. 达梦7的试用 与SQLSERVER的简单技术对比

    达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com ...

  5. Beta版本——用户试用与调研报告

    1 引言 1.1 系统概述 ​ 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...

  6. 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

    [背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...

  7. 代码阅读分析工具Understand 2.0试用

    Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...

  8. 如何申请国际版Office365和Azure的试用账号

    关键字:国际版.Office365.Azure.试用账号.1美元.信用卡 待续

  9. Android N preview 试用

    一.下载更新包 下载地址:https://developer.android.com/intl/zh-cn/preview/download.html 注意下载适合你手机的安装包哦 二.把你手机的oe ...

随机推荐

  1. Xilinx SDK编译Microblaze时出错

    reference:http://www.eeboard.com/evaluation/digilent-cmod-a7-fpga/9/ 在vivado 2015.4中创建microblaze软核,l ...

  2. spoon 更新数据

    一个小需求,被要求使用spoon 来同步数据 主要流程为: 1.查询A库未同步数据 id 2.根据步骤1查到的id,作为条件更新B库数据 3.更新B库数据成功则更改库A中的数据状态为已同步. 4.添加 ...

  3. 四川省赛 SCU - 4438

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...

  4. python基础初识介绍以及安装

    python介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...

  5. ubantu 安装mysql 5.7 解决安装不提示设置密码问题

    1.安装Mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install l ...

  6. Python socket简单操作

    #服务端:#导入socket模块 import socket #创建socket对象,创建了一个手机 server = socket.socket() #给程序设置一个ip地址和端口号,买了个手机卡 ...

  7. vuejs中v-bind绑定class时的注意事项

    关于v-bind绑定class的实例 作用:可用于不同样式之间的切换 <!DOCTYPE html> <html lang="en"> <head&g ...

  8. String中对字符串进行操作的一些方法

    1.substring 作用:根据字符串下标进行截取 public class StrTest { public static void main(String[] args) { String a ...

  9. OpenID 配置步骤

    允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,以及以可互操作和类似REST的方式获取关于最终用户的基本配置文件信息. 创建一个MVC客户端 1.新建一个ASP.NET Core MVC应 ...

  10. Kesci: Keras 实现 LSTM——时间序列预测

    博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量.本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测. ...