-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
有沒有代碼分析的軟件(代碼分析工具)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于有沒有代碼分析的軟件的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器
官網(wǎng):https://ai.de1919.com。
本文目錄:
eclipse源代碼應(yīng)該怎么分析
一、概述走入Eclipse的內(nèi)核,看看它到底是怎么工作的?
1、Eclipse源代碼
下載地址:http://download.eclipse.org/eclipse/downloads
2、源代碼閱讀工具
Source Insight
V3.5
它其實是一個代碼編輯軟件,因為有強(qiáng)大的代碼分析工具,可以很方便地跟蹤代碼的相關(guān)性,所以常用來作為閱讀代碼的工具。
下載地址:http://sourceinsight.com/down35.html
為了方便代碼的分析,我們只提取以下幾個插件的代碼:
org.eclipse.platform
org.eclipse.platform_3.1.1.jar
org.eclipse.core.commands
org.eclipse.core.commands_3.1.0.jar
org.eclipse.core.expressions
org.eclipse.core.expressions_3.1.0.jar
org.eclipse.core.runtime
org.eclipse.core.runtime_3.1.1.jar
org.eclipse.help
org.eclipse.help_3.1.0.jar
org.eclipse.jface
org.eclipse.jface_3.1.1.jar
org.eclipse.osgi
org.eclipse.osgi_3.1.1.jar
org.eclipse.swt.win32.win32.x86
org.eclipse.swt.win32.win32.x86_3.1.1.jar
org.eclipse.swt
org.eclipse.swt_3.1.0.jar
org.eclipse.ui.workbench
org.eclipse.ui.workbench_3.1.1.jar
org.eclipse.ui
org.eclipse.ui_3.1.1.jar
org.eclipse.update.configurator
org.eclipse.update.configurator_3.1.0.jar
將這些代碼解壓縮到一個空目錄里,然后導(dǎo)入到Source
Insight的Project里。
二、Eclipse啟動過程
首先我們從Eclipse的啟動過程開始分析。
1、eclipse.exe
它是Eclipse的啟動文件,是與平臺相關(guān)的可執(zhí)行文件。它的功能比較簡單,主要是加載startup.jar文件,代碼在Eclipse源代碼的/features/org.eclipse.platform.launchers/library目錄下,對應(yīng)多個平臺。對于win32平臺,你可以直接運行win32目錄下的build.bat文件來編譯得到它(需要安裝C編譯器)。
2、startup.jar
這個是Eclipse真正的啟動文件,你可以在命令行下運行java
-jar
startup.jar命令來啟動Eclipse。它的入口是org.eclipse.core.launcher.Main,它對應(yīng)的源代碼在org.eclipse.platform/src目錄的子目錄下的Main.java。我們從main函數(shù)往后跟蹤,找到basicRun,這個是啟動的主要部分。
protected
void basicRun(String[] args) throws Exception {
......
setupVMProperties(); //設(shè)置VM屬性
processConfiguration(); //讀取configuration/config.ini配置文件
......
// need to ensure that getInstallLocation is called at least
once to initialize the value.
// Do this AFTER processing the
configuration to allow the configuration to set
// the install
location.
getInstallLocation();
// locate boot
plugin (may return -dev mode variations)
URL[] bootPath =
getBootPath(bootLocation);
setSecurityPolicy(bootPath);
//設(shè)置執(zhí)行權(quán)限
// splash handling is done here, because the default
case needs to know
// the location of the boot plugin we are going to
use
handleSplash(bootPath);
invokeFramework(passThruArgs, bootPath); //啟動Eclipse內(nèi)核
}
這個函數(shù)前面部分是設(shè)置一些屬性,最關(guān)鍵的是最后invokeFramework函數(shù),它是啟動Eclipse的核心。下面我們看看invokeFramework函數(shù)的具體內(nèi)容。
private
void invokeFramework(String[] passThruArgs, URL[] bootPath)
throws
ClassNotFoundException, NoSuchMethodException, IllegalAccessException, Error,
Exception, InvocationTargetException {
......
URLClassLoader loader = new StartupClassLoader(bootPath, parent);
Class clazz = loader.loadClass(STARTER); //加載
String STARTER =
"org.eclipse.core.runtime.adaptor.EclipseStarter";
Method method =
clazz.getDeclaredMethod("run", new Class[] {String[].class,
Runnable.class}); //獲得run方法
......
method.invoke(clazz, new Object[] {passThruArgs, endSplashHandler});
//調(diào)用run方法
......
}
首先創(chuàng)建加載器loader,它是一個URLClassLoader類型。接著加載類"org.eclipse.core.runtime.adaptor.EclipseStarter",獲得其run方法,然后調(diào)用此方法。
3、OSGI啟動
"org.eclipse.core.runtime.adaptor.EclipseStarter"類的源代碼位于/plugins/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor??梢娝呀?jīng)位于OSGI包內(nèi),它是OSGI的啟動類。
public
static void startup(String[] args, Runnable endSplashHandler) throws Exception
{
......
adaptor = createAdaptor(); //建立適配器
......
OSGi osgi = new OSGi(adaptor); //建立OSGI對象,這就是我們要找的東西
......
osgi.launch(); //啟動OSGI
......
context = osgi.getBundleContext(); //獲得已加載的Bundle的執(zhí)行上下文
......
Bundle[] startBundles = loadBasicBundles(); //加載Bundle
setStartLevel(getStartLevel()); //設(shè)置啟動級別
......
}
4、Eclipse固定菜單的實現(xiàn)類(如Project、Help等菜單)
org.eclipse.ui.internal.ide包下的WorkbenchActionBuilder.java類中的 protected void
fillMenuBar(IMenuManager menuBar)方法,具體實現(xiàn)如下:
protected void
fillMenuBar(IMenuManager menuBar) {
menuBar.add(createFileMenu());
//在菜單欄增加File菜單
menuBar.add(createEditMenu());
menuBar.add(createNavigateMenu());
menuBar.add(createProjectMenu());
menuBar.add(new
GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menuBar.add(createWindowMenu());
menuBar.add(createHelpMenu());
}
如果想去掉File菜單下的Move項可以注掉private
MenuManager createFileMenu()方法中的以下語句:
// menu.add(moveAction);
findbugs和pclint有什么區(qū)別
區(qū)別是:findbug與pclint都是針對軟件漏洞進(jìn)行代碼檢測的工具軟件。findbug針對的是Java代碼,pclint針對的是C代碼或者C++。
Findbugs是一款Java靜態(tài)代碼分析工具,與其他靜態(tài)分析工具(如Checkstyle和PMD)不同,F(xiàn)indbugs 不注重樣式或者格式,它專注于尋找真正的缺陷或者潛在的性能問題,它可以幫助java工程師提高代碼質(zhì)量以及排除隱含的缺陷。有了靜態(tài)分析工具,就可以在不實際運行程序的情況對軟件進(jìn)行分析。
Findbugs運用Apache BCEL 庫分析類文件(class文件)而不是源代碼,將字節(jié)碼與一組缺陷模式進(jìn)行對比以發(fā)現(xiàn)可能的問題。
pclint是GIMPEL SOFTWARE 公司研發(fā)的C/C++軟件代碼靜態(tài)分析工具,他的全稱是PC-Lint/FlexeLint for C/C++。PC-Lint 能夠在Windows、MS-DOS 和OS/2 平臺上使用,以二進(jìn)制可執(zhí)行文檔的形式發(fā)布,而FlexeLint 運行于其他平臺,以源代碼的形式發(fā)布。pclint在全球擁有廣泛的客戶群,許多大型的軟件研發(fā)組織都把pclint檢查作為代碼走查的第一道工序。pclint不但能夠?qū)Τ淌竭M(jìn)行全局分析,識別沒有被適當(dāng)檢驗的數(shù)組下標(biāo),報告未被初始化的變量,警告使用空指針連同冗余的代碼,還能夠有效地提出許多程序在空間利用、運行效率上的改進(jìn)點。
學(xué)習(xí)python用什么軟件
一、Python代碼編輯器
Sublime Text
Sublime Text是一款非常流行的代碼編輯器,支持Python代碼編輯,同時兼容所有平臺,并且豐富的插件擴(kuò)展了語法和編輯功能,迅捷小巧,具有良好的兼容性,很受編程人士的喜愛!
2. Vim
Vim和Vi是一種模型編輯器,它將文本查看從文本編輯中分離,VIM在原始VI之上做了諸多改進(jìn),包括可擴(kuò)展模型和就地代碼構(gòu)建,VIMScripts可用于各種Python開發(fā)任務(wù)!
3. Atom
Atom被稱為“21世紀(jì)可綠色的文本編輯器”,可以兼容所有平臺,擁有時尚的界面、文件系統(tǒng)瀏覽器和擴(kuò)展插件市場,使用Electron構(gòu)建,其運行時安裝的擴(kuò)展插件可支持Python語言!
二、Python集成開發(fā)環(huán)境
1. PyCharm
PyCharm是唯一一款專門面向Python的全功能集成開發(fā)環(huán)境,同樣擁有付費版和免費開源版,PyCharm不論是在Windows、 Mac OS X系統(tǒng)中,還是在Linux系統(tǒng)中都支持快速安裝和使用。
PyCharm直接支持Python開發(fā)環(huán)境,打開一個新的文件然后就可以開始編寫代碼,也可以在PyCharm中直接運行和調(diào)試Python程序,它還支持源碼管理和項目,并且其擁有眾多便利和支持社區(qū),能夠快速掌握學(xué)習(xí)使用!
2. Eclipse + PyDev
PyDev是Eclipse集成開發(fā)環(huán)境的一個插件,支持Python調(diào)試、代碼補全和交互式Python控制臺等,在Eclipse中安裝PyDev非常便捷,只需從Eclipse中選擇“Help”點擊“Eclipse Marketplace”然后搜索PyDev,點擊安裝,必要的時候重啟Eclipse即可,對于資深Eclipse開發(fā)者來說,PyDev可以很輕松上手!
3. Visual Studio
Visual Studio是一款全功能集成開發(fā)平臺,提供了免費版和付費版,可以支持各種平臺的開發(fā),且附帶了自己的擴(kuò)展插件市場。在Visual Studio中可進(jìn)行Python編程,并且支持Python智能感知、調(diào)試和其他工具,值得注意的是Visual Studio不支持Linux平臺!
4. Thonny
Thonny是針對新手的一款集成開發(fā)環(huán)境,適用于全部主流平臺,默認(rèn)情況下,Thonny會和自帶捆綁的Python版本一起安裝,十分方便新手使用!
敲代碼用什么軟件
敲代碼用的軟件有:Android studio,WebStorm,Intellij IDEA,source inshght,Vscode。
1、Android studio
對UI界面設(shè)計和編寫代碼有更好地支持,可以方便地調(diào)整設(shè)備上的多種分辨率。同樣支持ProGuard工具和應(yīng)用簽名。不過,目前版本的Android Studio不能在同一窗口中管理多個項目。
2、WebStorm
jetbrains公司旗下一款JavaScript開發(fā)工具。目前已經(jīng)被廣大中國JS開發(fā)者譽為“Web前端開發(fā)神器”、“最強(qiáng)大的HTML5編輯器”、“最智能的JavaScript IDE”等。與IntelliJ IDEA同源,繼承了IntelliJ IDEA強(qiáng)大的JS部分的功能。不過,我的粉絲說這個有點卡,但是功能還是齊全的。
3、Intellij IDEA
Intellij IDEA是java編程語言開發(fā)的集成環(huán)境,在業(yè)界內(nèi)也被公認(rèn)是比較好的一個java開發(fā)工具。
4、source inshght
一個面向項目開發(fā)的程序編輯器和代碼瀏覽器,它擁有內(nèi)置的對C/C++,C#和Java等程序的分析。Source Insight能分析你的源代碼并在你工作的同時動態(tài)維護(hù)它自己的符號數(shù)據(jù)庫,并自動為你顯示有用的上下文信息。Source Insight提供了最快速的對源代碼的導(dǎo)航和任何程序編輯器的源信息。
5、Vscode
Vscode全稱Visual Studio Code,是一款針對于編寫現(xiàn)代web和云應(yīng)用的跨平臺源代碼編輯器。
以上就是關(guān)于有沒有代碼分析的軟件相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
人類有沒有可能是機(jī)器人(人類有沒有可能是機(jī)器人的孩子)
什么方法可以鍛煉手指靈活度(什么方法可以鍛煉手指靈活度和靈活性)
個人如何建立網(wǎng)站(個人如何建立網(wǎng)站賬號)
問大家
鹽城誠信的網(wǎng)站建設(shè)設(shè)計哪家有名?路過的老鐵們有沒有誰了解
連云港市場推崇的申請中英文域名大概是多少錢?各位老板們有沒有誰了解
保定專業(yè)制作一般的站牌廣告有推薦的嗎?在座的大神們有沒有誰了解
承德專業(yè)制作名氣大的高速服務(wù)區(qū)道旗有沒有好的店家?各位大俠們給個建議
興化服務(wù)好的00電話辦理哪家服務(wù)好?各位老板們有沒有誰了解
我想問問濟(jì)南婚介哪家好?。坑袥]有便宜服務(wù)好的?。?/a>
有沒有去濟(jì)南婚介找到對象的感覺怎么樣?請幫忙推薦正規(guī)靠譜婚介
河北二志文化傳媒有限公司在廊坊專業(yè)制作公交候車牌行業(yè)服務(wù)好嗎?在座的老鄉(xiāng)們有沒有誰了解
保定專業(yè)制作一般的高速服務(wù)區(qū)環(huán)保燈箱導(dǎo)視牌有沒有好的公司推薦?各位前輩們幫幫我
濟(jì)南的正規(guī)婚介有哪些?成功率高口碑好的婚姻介紹所在哪里?