<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## javaparser ### 使用Java Parser轉換生成AST Java Parser轉換生成AST,有很多方法,主要支持兩大類方式: **1)???? 輸入為文件** 輸入為文件,即針對完整的文件為輸入,生成整個文件的AST(對于Java來說,如果是整個Java文件,AST的根節點為CompilationUnit),這種方式,可以完整保留源碼的代碼行信息,這樣方便進行分析。對于文件為輸入,即輸入文件路徑(多種寫法,例如String、File、Path、Resource等,其實都是表示文件路徑),同時可以指定文件的編碼方式,下面的用例,指定的是nio的Path格式的路徑。 ~~~javascript // 1. 轉換的是完整的Java文件 File base = new File(""); String relativePath = "test-case/javaparser-testcase/src/main/java/zmj/test/thread/MyThread.java"; String absolutePath = base.getCanonicalPath() + File.separator + relativePath; ParseResult<CompilationUnit> result = new JavaParser().parse(Paths.get(absolutePath)); result.getResult().ifPresent(YamlPrinter::print); ~~~ ### AST ![](https://img.kancloud.cn/76/45/7645e5cefe463e6653b6372b3a8f3769_708x758.png) ![](https://img.kancloud.cn/8e/67/8e6725c9abd633b5761d10f0b4d9c91e_1197x347.png) ### 應用 #### 源碼間依賴關系分析 基于類型推斷獲取如下信息: 1)???? 當前類的父類或者父接口,并遞歸獲取所有的父類和父接口; 2)???? 獲取當前所調用函數的signature(函數簽名,包含可以唯一識別一個方法的所有信息,例如所在的類、名字、形參類型列表、返回值類型),從而拿到函數調用關系; 另外,再結合源碼文件和Java類定義的對應關系,可以很方便地構造出工程的CG圖,識別出源碼之間的依賴關系分析。 #### 代碼度量 實際上,基于Java Parser獲得的AST信息,輔助類型推斷特性,可以實現針對源代碼的各種度量內容。可以參考[https://www.exida.com/Blog/software-metrics-iso-26262-iec-61508](https://www.exida.com/Blog/software-metrics-iso-26262-iec-61508), 查看常見的代碼度量項。針對其中3.1所列出的所有的項都可以度量。 常見的一些度量項: 針對函數:圈復雜度、代碼深度、各類代碼行信息、調用函數數量、被調用次數、其他諸如入參個數…; 針對文件:總代碼行、空行、注釋行、非空非注釋行、代碼注釋密度…; 針對工程:文件總數、代碼行總數、平均代碼行… 基于Java Parser可以很好地進行實現,而且大部分都不需要完整的依賴信息,可以方便地進行度量。 #### Java規范支持檢查 當前,針對各類規范支持,可以在不同的層面上進行支持,例如直接對源碼檢查、對解析得到的Token進行檢查、對AST進行檢查、在CFG和CG上進行數據流檢查和各種形式化檢查等。 基于Java Parser,可以實現在AST及源碼(可以直接讀取源碼信息)、Token(從AST的節點可以獲取當前AST Node中的所有的Token)相結合的所有檢查。 例如,PMD主要是在AST上進行的檢查,CheckStyle主要是在Token和AST上進行的檢查,結合類型推斷的支持,Java Parser可以實現比PMD和CheckStyle更精確的檢查。 # 參考資料 [Java Parser應用介紹](https://cloud.tencent.com/developer/news/740798)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看