<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    一種基于Graph Kernel的API使用示例選擇方法

    VSole2022-05-17 17:51:01

    開發人員在編寫代碼的過程中,通常會希望知道某個API的具體使用方法(也就是使用示例)。過去的研究主要是通過聚類和總結的方法從代碼庫中提取相關的代碼片段來生成示例代碼,也就是說:將源代碼轉換成方法調用序列或特征向量;這種方法只對源代碼的部分進行建模,因此容易產生不準確的示例。

    在這篇文章中,作者將源代碼表示為對象使用圖,使用graph kernel進行圖嵌入以進行聚類,通過排名從每個集群中選擇一個代碼表圖來輸出代碼示例。模型相關內容詳見:https://guxd.github.io/codekernel/。

    圖1是CodeKernel模型的應用場景。離線處理階段的目標是選擇代碼示例:收集每個API相關的代碼片段,使用CodeKernel模型選擇對應的API使用示例。在運行過程中,給定一個API請求,系統會給出與該API對應的代碼示例。

    Fig. 1 CodeKernel模型使用場景

    圖2是模型的Workflow。模型的輸入是一系列來自開源項目和代碼搜索結果的原始代碼片段。原始代碼片段首先會被轉換成對象圖(如圖3所示);然后使用graph kernel將其嵌入到連續空間中,得到內積矩陣;在內積矩陣上使用聚類算法進行圖聚類(使用譜聚類算法);最后基于排序的方法從每個集群中選擇代碼圖,將其還原為代碼示例。

    Fig. 2 模型Workflow

    本文中,使用GrouMiner[1]構建函數級對象圖。對象圖包含文本、序列、結構和數據依賴的信息,忽略了語法細節,能夠較為完整地表示源代碼,是局部上下文不敏感的。

    Fig. 3 對象圖示例

    Fig. 4 CodeKernel偽代碼

    聚類后的結果通過兩種排序度量指標進行排序。

    • Centrality:從集群中選擇的圖與集群中的其他圖要有很高的相似性,也就是高代表性。

    • Specificity:具有高代表性的圖可能傾向于更大的圖,因為它們更可能與其他圖相似。但是,較大的圖往往有更多的特定元素(即,在集群中很少出現的邊),這使得代碼示例難以理解。Specificity指標的目的是為了懲罰有太多特定邊的圖。

    最終,排序分數通過如下公式計算得出。

    Fig. 5 CodeKernel模型產生的代碼示例

    參考文獻

    [1] Nguyen T T, Nguyen H A, Pham N H, et al. Graph-based mining of multiple object usage patterns[C]//Proceedings of the 7th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT symposium on the Foundations of Software Engineering. 2009: 383-392.

    api對象圖
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    開發人員在編寫代碼的過程中,通常會希望知道某個API的具體使用方法(也就是使用示例)。過去的研究主要是通過聚類和總結的方法從代碼庫中提取相關的代碼片段來生成示例代碼,也就是說:將源代碼轉換成方法調用序列或特征向量;這種方法只對源代碼的部分進行建模,因此容易產生不準確的示例。
    一、前言 這篇文章可能出現一些文截圖顏色或者命令端口不一樣的情況,原因是因為這篇文章是我重復嘗試過好多次才寫的,所以比如正常應該是訪問6443,但是截圖中是顯示大端口比如60123這種,不影響閱讀和文章邏輯,無需理會即可,另外k8s基礎那一欄。。。本來想寫一下k8s的鑒權,后來想了想,太長了,不便于我查筆記,還不如分開寫,所以K8S基礎那里屬于湊數???寫了懶得刪(雖然是粘貼的:))
    K8s提權之RBAC權限濫用
    2022-06-20 15:04:59
    在K8s中RBAC是常用的授權模式,如果在配置RBAC時分配了“過大”資源對象訪問權限可導致權限濫用來提權,以至于攻擊者擴大戰果,滲透集群。 如下是一些RBAC相關的筆記。
    淺談云安全之K8S
    2021-07-14 05:06:00
    Kubernetes 是一個可移植的,可擴展的開源容器編排平臺,用于管理容器化的工作負載和服務,方便了聲明式配置和自動化。它擁有一個龐大且快速增長的生態系統。Kubernetes 的服務,支持和工具廣泛可用。
    作為一只網安新人小白,在RCE方向上的求知經高人指點落腳在了Struts2上。
    01 Bucket 公開訪問 騰訊云存儲桶的訪問權限默認為私有讀寫權限,且存儲桶名稱會帶上一串時間戳:
    看到國內外不少機構在總結:“2020年最好的持續測試工具”,比如: ...... 還有的機構或公司試圖給出“什么是持續測試?”的定義,比如: ....... 這說明,隨著敏捷開發和DevOps的推廣,持續測試這個概念確實越來越火...
    Win32k組件最初的設計和編寫是完全建立的用戶層上的,但是微軟在 Windows NT 4.0 的改變中將 Win32k.sys 作為改變的一部分而引入,用以提升形繪制性能并減少 Windows 應用程序的內存需求。窗口管理器(User)和形設備接口(GDI)在極大程度上被移出客戶端/服務端運行時子系統(CSRSS)并被落實在它自身的一個內核模塊中。
    如今Node.js憑借其跨平臺、高性能的JavaScript執行環境,被廣泛應用于服務器端和桌面程序(如Skype)的開發。在過去幾年中,有報道稱其他動態編程語言(例如 PHP 和 Ruby)在共享對象方面是不安全的。然而,這種安全風險在 JavaScript 和 Node.js 程序中并沒有得到很好的研究和理解。
    在對電子投票和紙質投票的安全性進行比較的討論中,隱私的減少通常是反對遠程互聯網投票的一種說法。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类