Skip to content

三元Java数据开发者搜索(方法API、方法级代码、StackOverflow问答)

License

Notifications You must be signed in to change notification settings

BlankSpacePlus/python-developer-search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

开发者搜索 Developer Search

软件依赖

启动运行

  1. 下载并安装Conda环境(Anaconda或Miniconda)
  2. 创建虚拟环境:conda create --name developer_search python==3.8
  3. 进入虚拟环境:conda activate developer_search
  4. 切换到src目录(cd命令)
  5. 下载项目依赖(pip):pip install -r requirements.txt
  6. 启动Flask:python developer_search.py
  7. 转发端口到浏览器:http://localhost:5000

工程结构

├── data
│   ├── codesearch
│   │   ├── data_source
│   │   │   ├── data0.pkl
│   │   │   ├── data100.pkl
│   │   │   ├── data101.pkl
│   │   │   ├── data102.pkl
│   │   │   ├── data103.pkl
│   │   │   ├── data104.pkl
│   │   │   ├── data105.pkl
│   │   │   ├── data106.pkl
│   │   │   ├── data107.pkl
│   │   │   ├── data108.pkl
│   │   │   ├── data109.pkl
│   │   │   ├── data10.pkl
│   │   │   ├── data110.pkl
│   │   │   ├── data111.pkl
│   │   │   ├── data112.pkl
│   │   │   ├── data113.pkl
│   │   │   ├── data114.pkl
│   │   │   ├── data115.pkl
│   │   │   ├── data116.pkl
│   │   │   ├── data117.pkl
│   │   │   ├── data118.pkl
│   │   │   ├── data119.pkl
│   │   │   ├── data11.pkl
│   │   │   ├── data120.pkl
│   │   │   ├── data121.pkl
│   │   │   ├── data122.pkl
│   │   │   ├── data123.pkl
│   │   │   ├── data124.pkl
│   │   │   ├── data125.pkl
│   │   │   ├── data126.pkl
│   │   │   ├── data127.pkl
│   │   │   ├── data128.pkl
│   │   │   ├── data129.pkl
│   │   │   ├── data12.pkl
│   │   │   ├── data130.pkl
│   │   │   ├── data131.pkl
│   │   │   ├── data132.pkl
│   │   │   ├── data133.pkl
│   │   │   ├── data134.pkl
│   │   │   ├── data135.pkl
│   │   │   ├── data136.pkl
│   │   │   ├── data137.pkl
│   │   │   ├── data138.pkl
│   │   │   ├── data139.pkl
│   │   │   ├── data13.pkl
│   │   │   ├── data140.pkl
│   │   │   ├── data141.pkl
│   │   │   ├── data142.pkl
│   │   │   ├── data143.pkl
│   │   │   ├── data144.pkl
│   │   │   ├── data145.pkl
│   │   │   ├── data146.pkl
│   │   │   ├── data147.pkl
│   │   │   ├── data148.pkl
│   │   │   ├── data149.pkl
│   │   │   ├── data14.pkl
│   │   │   ├── data150.pkl
│   │   │   ├── data151.pkl
│   │   │   ├── data152.pkl
│   │   │   ├── data153.pkl
│   │   │   ├── data154.pkl
│   │   │   ├── data155.pkl
│   │   │   ├── data156.pkl
│   │   │   ├── data157.pkl
│   │   │   ├── data158.pkl
│   │   │   ├── data159.pkl
│   │   │   ├── data15.pkl
│   │   │   ├── data160.pkl
│   │   │   ├── data161.pkl
│   │   │   ├── data162.pkl
│   │   │   ├── data163.pkl
│   │   │   ├── data164.pkl
│   │   │   ├── data165.pkl
│   │   │   ├── data16.pkl
│   │   │   ├── data17.pkl
│   │   │   ├── data18.pkl
│   │   │   ├── data19.pkl
│   │   │   ├── data1.pkl
│   │   │   ├── data20.pkl
│   │   │   ├── data21.pkl
│   │   │   ├── data22.pkl
│   │   │   ├── data23.pkl
│   │   │   ├── data24.pkl
│   │   │   ├── data25.pkl
│   │   │   ├── data26.pkl
│   │   │   ├── data27.pkl
│   │   │   ├── data28.pkl
│   │   │   ├── data29.pkl
│   │   │   ├── data2.pkl
│   │   │   ├── data30.pkl
│   │   │   ├── data31.pkl
│   │   │   ├── data32.pkl
│   │   │   ├── data33.pkl
│   │   │   ├── data34.pkl
│   │   │   ├── data35.pkl
│   │   │   ├── data36.pkl
│   │   │   ├── data37.pkl
│   │   │   ├── data38.pkl
│   │   │   ├── data39.pkl
│   │   │   ├── data3.pkl
│   │   │   ├── data40.pkl
│   │   │   ├── data41.pkl
│   │   │   ├── data42.pkl
│   │   │   ├── data43.pkl
│   │   │   ├── data44.pkl
│   │   │   ├── data45.pkl
│   │   │   ├── data46.pkl
│   │   │   ├── data47.pkl
│   │   │   ├── data48.pkl
│   │   │   ├── data49.pkl
│   │   │   ├── data4.pkl
│   │   │   ├── data50.pkl
│   │   │   ├── data51.pkl
│   │   │   ├── data52.pkl
│   │   │   ├── data53.pkl
│   │   │   ├── data54.pkl
│   │   │   ├── data55.pkl
│   │   │   ├── data56.pkl
│   │   │   ├── data57.pkl
│   │   │   ├── data58.pkl
│   │   │   ├── data59.pkl
│   │   │   ├── data5.pkl
│   │   │   ├── data60.pkl
│   │   │   ├── data61.pkl
│   │   │   ├── data62.pkl
│   │   │   ├── data63.pkl
│   │   │   ├── data64.pkl
│   │   │   ├── data65.pkl
│   │   │   ├── data66.pkl
│   │   │   ├── data67.pkl
│   │   │   ├── data68.pkl
│   │   │   ├── data69.pkl
│   │   │   ├── data6.pkl
│   │   │   ├── data70.pkl
│   │   │   ├── data71.pkl
│   │   │   ├── data72.pkl
│   │   │   ├── data73.pkl
│   │   │   ├── data74.pkl
│   │   │   ├── data75.pkl
│   │   │   ├── data76.pkl
│   │   │   ├── data77.pkl
│   │   │   ├── data78.pkl
│   │   │   ├── data79.pkl
│   │   │   ├── data7.pkl
│   │   │   ├── data80.pkl
│   │   │   ├── data81.pkl
│   │   │   ├── data82.pkl
│   │   │   ├── data83.pkl
│   │   │   ├── data84.pkl
│   │   │   ├── data85.pkl
│   │   │   ├── data86.pkl
│   │   │   ├── data87.pkl
│   │   │   ├── data88.pkl
│   │   │   ├── data89.pkl
│   │   │   ├── data8.pkl
│   │   │   ├── data90.pkl
│   │   │   ├── data91.pkl
│   │   │   ├── data92.pkl
│   │   │   ├── data93.pkl
│   │   │   ├── data94.pkl
│   │   │   ├── data95.pkl
│   │   │   ├── data96.pkl
│   │   │   ├── data97.pkl
│   │   │   ├── data98.pkl
│   │   │   ├── data99.pkl
│   │   │   └── data9.pkl
│   │   ├── java_test_0.jsonl.gz
│   │   ├── test
│   │   │   └── java
│   │   │       ├── batch_0.txt
│   │   │       ├── batch_10.txt
│   │   │       ├── batch_11.txt
│   │   │       ├── batch_121.txt
│   │   │       ├── batch_12.txt
│   │   │       ├── batch_13.txt
│   │   │       ├── batch_14.txt
│   │   │       ├── batch_15.txt
│   │   │       ├── batch_16.txt
│   │   │       ├── batch_17.txt
│   │   │       ├── batch_18.txt
│   │   │       ├── batch_19.txt
│   │   │       ├── batch_1.txt
│   │   │       ├── batch_20.txt
│   │   │       ├── batch_21.txt
│   │   │       ├── batch_22.txt
│   │   │       ├── batch_23.txt
│   │   │       ├── batch_24.txt
│   │   │       ├── batch_25.txt
│   │   │       ├── batch_2.txt
│   │   │       ├── batch_3.txt
│   │   │       ├── batch_4.txt
│   │   │       ├── batch_5.txt
│   │   │       ├── batch_6.txt
│   │   │       ├── batch_7.txt
│   │   │       ├── batch_8.txt
│   │   │       ├── batch_9.txt
│   │   │       └── cached_test_batch_121_codebert_200_codesearch
│   │   ├── train.log
│   │   └── train_valid
│   │       └── java
│   │           ├── cached_dev_valid_codebert_200_codesearch
│   │           ├── cached_train_train_codebert_200_codesearch
│   │           ├── train.txt
│   │           └── valid.txt
│   ├── code-snippet.txt
│   ├── index
│   │   ├── _MAIN_1.toc
│   │   ├── MAIN_dhb9stsudccfjdhy.seg
│   │   └── MAIN_WRITELOCK
│   ├── java-code-selection.train
│   ├── jdk_vocab.pkl
│   ├── method_vocab_stemed.pkl
│   ├── parsed_vocab_jdk_item.pkl
│   ├── query_code_json.json
│   └── query.txt
├── images
│   └── code-search-net.png
│   └── stack-overflow.png
├── LICENSE
├── log
│   └── main.log
├── model
│   ├── bert
│   │   ├── config.json
│   │   ├── pytorch_model.bin
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   ├── tokenizer.json
│   │   └── vocab.txt
│   ├── codebert
│   │   ├── config.json
│   │   ├── merges.txt
│   │   ├── pytorch_model.bin
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   └── vocab.json
│   ├── code_search
│   │   ├── checkpoint-best
│   │   │   ├── config.json
│   │   │   ├── optimizer.pt
│   │   │   ├── pytorch_model.bin
│   │   │   ├── scheduler.pt
│   │   │   ├── training_0.bin
│   │   │   ├── training_1.bin
│   │   │   └── training_2.bin
│   │   ├── checkpoint-last
│   │   │   ├── config.json
│   │   │   ├── idx_file.txt
│   │   │   ├── optimizer.pt
│   │   │   ├── pytorch_model.bin
│   │   │   ├── scheduler.pt
│   │   │   └── step_file.txt
│   │   ├── config.json
│   │   ├── eval_results.txt
│   │   ├── merges.txt
│   │   ├── pytorch_model.bin
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   ├── training_args.bin
│   │   └── vocab.json
│   ├── code_selector
│   │   ├── config.json
│   │   ├── model.ckpt
│   │   ├── pytorch_model.bin
│   │   ├── tokenizer_config.json
│   │   ├── tokenizer.json
│   │   └── training_stats.json
│   └── t5_paraphrase
│       ├── config.json
│       ├── pytorch_model.bin
│       ├── special_tokens_map.json
│       ├── spiece.model
│       └── tokenizer_config.json
├── README.md
├── requirements.txt
├── result
│   └── code_search
│       └── 121_batch_result.txt
└── src
    ├── bert_download.py
    ├── bert_mlp.py
    ├── codebert_download.py
    ├── codebert_fine_tune.sh
    ├── codebert_inference.sh
    ├── codebert_process_data.py
    ├── codebert_run_classifier.py
    ├── codebert_utils.py
    ├── code_matcher_utils.py
    ├── code_search_index.py
    ├── code_search_parse.py
    ├── code_search_rerank.py
    ├── code_search.py
    ├── code_selector_data_check.py
    ├── code_selector_data_process.py
    ├── code_selector_model.py
    ├── code_selector_test.py
    ├── code_selector_utils.py
    ├── developer_search.py
    ├── __pycache__
    │   ├── bert_mlp.cpython-37.pyc
    │   ├── codebert_utils_2.cpython-38.pyc
    │   ├── codebert_utils.cpython-38.pyc
    │   ├── code_selector_model.cpython-37.pyc
    │   ├── code_selector_utils.cpython-37.pyc
    │   ├── flask_show.cpython-37.pyc
    │   ├── parsing.cpython-37.pyc
    │   ├── query_rewriter_model.cpython-37.pyc
    │   └── util.cpython-37.pyc
    ├── qa_search.py
    ├── query_rewriter_model.py
    ├── query_rewriter_test.py
    ├── runs
    ├── static
    │   ├── css
    │   │   ├── a11y-light.css
    │   │   ├── codestyle.css
    │   │   ├── index.css
    │   │   ├── like.css
    │   │   ├── load.css
    │   │   ├── prism.css
    │   │   ├── style.css
    │   │   └── waitMe.css
    │   ├── img
    │   │   ├── dislike.gif
    │   │   ├── favicon.ico
    │   │   ├── like.gif
    │   │   └── search-white.png
    │   ├── js
    │   │   ├── highlight.pack.js
    │   │   ├── index.js
    │   │   ├── jquery-1.11.0.min.js
    │   │   ├── jquery.codestyle.js
    │   │   ├── jquery.codestyle.min.js
    │   │   ├── like.js
    │   │   ├── prism.js
    │   │   └── wait.js
    │   └── lib
    │       ├── bootstrap-4.1.3-dist
    │       │   ├── css
    │       │   │   ├── bootstrap.css
    │       │   │   ├── bootstrap.css.map
    │       │   │   ├── bootstrap-grid.css
    │       │   │   ├── bootstrap-grid.css.map
    │       │   │   ├── bootstrap-grid.min.css
    │       │   │   ├── bootstrap-grid.min.css.map
    │       │   │   ├── bootstrap.min.css
    │       │   │   ├── bootstrap.min.css.map
    │       │   │   ├── bootstrap-reboot.css
    │       │   │   ├── bootstrap-reboot.css.map
    │       │   │   ├── bootstrap-reboot.min.css
    │       │   │   └── bootstrap-reboot.min.css.map
    │       │   └── js
    │       │       ├── bootstrap.bundle.js
    │       │       ├── bootstrap.bundle.js.map
    │       │       ├── bootstrap.bundle.min.js
    │       │       ├── bootstrap.bundle.min.js.map
    │       │       ├── bootstrap.js
    │       │       ├── bootstrap.js.map
    │       │       ├── bootstrap.min.js
    │       │       └── bootstrap.min.js.map
    │       └── jquery-3.3.1.min.js
    ├── templates
    │   └── index.html
    └── torch_cuda_test.py

数据获取

  • JavaAPI
  • CodeSearchNet
    • CodeSearchNet Challenge: Evaluating the State of Semantic Code Search
    • GitHub Repository
    • 数据示例:
      {
          "repo": "googleapis/google-cloud-java",
          "path": "google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java",
          "func_name": "SubscriptionAdminClient.modifyPushConfig",
          "original_string": "public final void modifyPushConfig(String subscription, PushConfig pushConfig) {\n\n    ModifyPushConfigRequest request =\n        ModifyPushConfigRequest.newBuilder()\n            .setSubscription(subscription)\n            .setPushConfig(pushConfig)\n            .build();\n    modifyPushConfig(request);\n  }",
          "language": "java",
          "code": "public final void modifyPushConfig(String subscription, PushConfig pushConfig) {\n\n    ModifyPushConfigRequest request =\n        ModifyPushConfigRequest.newBuilder()\n            .setSubscription(subscription)\n            .setPushConfig(pushConfig)\n            .build();\n    modifyPushConfig(request);\n  }",
          "code_tokens": ["public", "final", "void", "modifyPushConfig", "(", "String", "subscription", ",", "PushConfig", "pushConfig", ")", "{", "ModifyPushConfigRequest", "request", "=", "ModifyPushConfigRequest", ".", "newBuilder", "(", ")", ".", "setSubscription", "(", "subscription", ")", ".", "setPushConfig", "(", "pushConfig", ")", ".", "build", "(", ")", ";", "modifyPushConfig", "(", "request", ")", ";", "}"],
          "docstring": "Modifies the `PushConfig` for a specified subscription.\n\n<p>This may be used to change a push subscription to a pull one (signified by an empty\n`PushConfig`) or vice versa, or change the endpoint URL and other attributes of a push\nsubscription. Messages will accumulate for delivery continuously through the call regardless of\nchanges to the `PushConfig`.\n\n<p>Sample code:\n\n<pre><code>\ntry (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {\nProjectSubscriptionName subscription = ProjectSubscriptionName.of(\"[PROJECT]\", \"[SUBSCRIPTION]\");\nPushConfig pushConfig = PushConfig.newBuilder().build();\nsubscriptionAdminClient.modifyPushConfig(subscription.toString(), pushConfig);\n}\n</code></pre>\n\n@param subscription The name of the subscription. Format is\n`projects/{project}/subscriptions/{sub}`.\n@param pushConfig The push configuration for future deliveries.\n<p>An empty `pushConfig` indicates that the Pub/Sub system should stop pushing messages\nfrom the given subscription and allow messages to be pulled and acknowledged - effectively\npausing the subscription if `Pull` or `StreamingPull` is not called.\n@throws com.google.api.gax.rpc.ApiException if the remote call fails",
          "docstring_tokens": ["Modifies", "the", "PushConfig", "for", "a", "specified", "subscription", "."],
          "sha": "d2f0bc64a53049040fe9c9d338b12fab3dd1ad6a",
          "url": "https://github.com/googleapis/google-cloud-java/blob/d2f0bc64a53049040fe9c9d338b12fab3dd1ad6a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java#L1291-L1299",
          "partition": "train"
      }
  • StackExchange
    • StackExchange
    • StackOverflow
    • 数据示例:
      {
          "id": 1,
          "re_question": "how to make the division of 2 ints produce a float instead of another int?",
          "qc": {
              "question": "How can I increment a variable without exceeding a maximum value?",
              "code": "health = health < NUM ? health + NUM : NUM ;"
          }
      },
  • CodeMacher

模型选择

About

三元Java数据开发者搜索(方法API、方法级代码、StackOverflow问答)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published