Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
64fb587d
J
jadx
项目概览
Quincy379
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
64fb587d
编写于
12月 19, 2020
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(gui): improve rename for overridden methods
上级
2ca3c653
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
75 addition
and
4 deletion
+75
-4
jadx-core/src/main/java/jadx/core/dex/visitors/usage/UsageInfoVisitor.java
...n/java/jadx/core/dex/visitors/usage/UsageInfoVisitor.java
+10
-0
jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java
jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java
+6
-0
jadx-gui/src/main/java/jadx/gui/treemodel/JField.java
jadx-gui/src/main/java/jadx/gui/treemodel/JField.java
+6
-0
jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java
jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java
+6
-0
jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java
jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java
+4
-0
jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java
jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java
+5
-0
jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java
jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java
+10
-1
jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeLinkGenerator.java
...src/main/java/jadx/gui/ui/codearea/CodeLinkGenerator.java
+17
-0
jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java
...main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java
+3
-3
jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java
...-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java
+8
-0
未找到文件。
jadx-core/src/main/java/jadx/core/dex/visitors/usage/UsageInfoVisitor.java
浏览文件 @
64fb587d
...
...
@@ -6,6 +6,8 @@ import org.slf4j.LoggerFactory;
import
jadx.api.plugins.input.data.ICodeReader
;
import
jadx.api.plugins.input.insns.InsnData
;
import
jadx.api.plugins.input.insns.Opcode
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.MethodOverrideAttr
;
import
jadx.core.dex.info.FieldInfo
;
import
jadx.core.dex.info.MethodInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
...
...
@@ -15,12 +17,14 @@ import jadx.core.dex.nodes.MethodNode;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.dex.visitors.AbstractVisitor
;
import
jadx.core.dex.visitors.JadxVisitor
;
import
jadx.core.dex.visitors.OverrideMethodVisitor
;
import
jadx.core.dex.visitors.RenameVisitor
;
@JadxVisitor
(
name
=
"UsageInfoVisitor"
,
desc
=
"Scan class and methods to collect usage info and class dependencies"
,
runAfter
=
{
OverrideMethodVisitor
.
class
,
// add method override as use
RenameVisitor
.
class
// sort by alias name
}
)
...
...
@@ -63,6 +67,12 @@ public class UsageInfoVisitor extends AbstractVisitor {
}
catch
(
Exception
e
)
{
mth
.
addError
(
"Dependency scan failed"
,
e
);
}
MethodOverrideAttr
overrideAttr
=
mth
.
get
(
AType
.
METHOD_OVERRIDE
);
if
(
overrideAttr
!=
null
)
{
for
(
MethodNode
relatedMthNode
:
overrideAttr
.
getRelatedMthNodes
())
{
usageInfo
.
methodUse
(
relatedMthNode
,
mth
);
}
}
}
private
static
void
processInstructions
(
MethodNode
mth
,
UsageInfo
usageInfo
)
{
...
...
jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java
浏览文件 @
64fb587d
...
...
@@ -10,6 +10,7 @@ import jadx.api.JavaClass;
import
jadx.api.JavaField
;
import
jadx.api.JavaMethod
;
import
jadx.api.JavaNode
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.gui.utils.NLS
;
import
jadx.gui.utils.UiUtils
;
...
...
@@ -50,6 +51,11 @@ public class JClass extends JLoadableNode {
getRootClass
().
load
();
}
@Override
public
boolean
canRename
()
{
return
!
cls
.
getClassNode
().
contains
(
AFlag
.
DONT_RENAME
);
}
public
synchronized
void
load
()
{
if
(!
loaded
)
{
cls
.
decompile
();
...
...
jadx-gui/src/main/java/jadx/gui/treemodel/JField.java
浏览文件 @
64fb587d
...
...
@@ -5,6 +5,7 @@ import javax.swing.ImageIcon;
import
jadx.api.JavaField
;
import
jadx.api.JavaNode
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.gui.utils.OverlayIcon
;
import
jadx.gui.utils.UiUtils
;
...
...
@@ -43,6 +44,11 @@ public class JField extends JNode {
return
jParent
.
getRootClass
();
}
@Override
public
boolean
canRename
()
{
return
!
field
.
getFieldNode
().
contains
(
AFlag
.
DONT_RENAME
);
}
@Override
public
int
getLine
()
{
return
field
.
getDecompiledLine
();
...
...
jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java
浏览文件 @
64fb587d
...
...
@@ -7,6 +7,7 @@ import javax.swing.ImageIcon;
import
jadx.api.JavaMethod
;
import
jadx.api.JavaNode
;
import
jadx.core.dex.attributes.AFlag
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.gui.utils.OverlayIcon
;
...
...
@@ -68,6 +69,11 @@ public class JMethod extends JNode {
return
icon
;
}
@Override
public
boolean
canRename
()
{
return
!
mth
.
getMethodNode
().
contains
(
AFlag
.
DONT_RENAME
);
}
String
makeBaseString
()
{
if
(
mth
.
isClassInit
())
{
return
"{...}"
;
...
...
jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java
浏览文件 @
64fb587d
...
...
@@ -75,6 +75,10 @@ public abstract class JNode extends DefaultMutableTreeNode {
return
javaNode
.
getName
();
}
public
boolean
canRename
()
{
return
false
;
}
public
abstract
String
makeString
();
public
String
makeStringHtml
()
{
...
...
jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java
浏览文件 @
64fb587d
...
...
@@ -74,6 +74,11 @@ public class JPackage extends JNode implements Comparable<JPackage> {
return
name
;
}
@Override
public
boolean
canRename
()
{
return
true
;
}
public
String
getFullName
()
{
return
fullName
;
}
...
...
jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java
浏览文件 @
64fb587d
...
...
@@ -26,6 +26,9 @@ import jadx.api.JavaField;
import
jadx.api.JavaMethod
;
import
jadx.api.JavaNode
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.dex.attributes.AType
;
import
jadx.core.dex.attributes.nodes.MethodOverrideAttr
;
import
jadx.core.dex.nodes.MethodNode
;
import
jadx.core.dex.nodes.RootNode
;
import
jadx.core.dex.visitors.RenameVisitor
;
import
jadx.core.utils.Utils
;
...
...
@@ -113,7 +116,13 @@ public class RenameDialog extends JDialog {
if
(
node
instanceof
JMethod
)
{
JavaMethod
javaMethod
=
(
JavaMethod
)
node
.
getJavaNode
();
type
=
"m"
;
id
=
javaMethod
.
getMethodNode
().
getMethodInfo
().
getRawFullId
();
MethodNode
mthNode
=
javaMethod
.
getMethodNode
();
MethodOverrideAttr
overrideAttr
=
mthNode
.
get
(
AType
.
METHOD_OVERRIDE
);
if
(
overrideAttr
!=
null
)
{
// use method closest to base method
mthNode
=
Objects
.
requireNonNull
(
Utils
.
last
(
overrideAttr
.
getRelatedMthNodes
()));
}
id
=
mthNode
.
getMethodInfo
().
getRawFullId
();
}
else
if
(
node
instanceof
JField
)
{
JavaField
javaField
=
(
JavaField
)
node
.
getJavaNode
();
type
=
"f"
;
...
...
jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeLinkGenerator.java
浏览文件 @
64fb587d
...
...
@@ -13,6 +13,7 @@ import org.jetbrains.annotations.Nullable;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.api.JavaNode
;
import
jadx.gui.treemodel.JNode
;
import
jadx.gui.utils.JumpPosition
;
...
...
@@ -27,6 +28,22 @@ public class CodeLinkGenerator implements LinkGenerator {
this
.
jNode
=
codeArea
.
getNode
();
}
public
JavaNode
getNodeAtOffset
(
RSyntaxTextArea
textArea
,
int
offset
)
{
try
{
if
(
jNode
.
getCodeInfo
()
==
null
)
{
return
null
;
}
int
sourceOffset
=
getLinkSourceOffset
(
textArea
,
offset
);
if
(
sourceOffset
==
-
1
)
{
return
null
;
}
return
codeArea
.
getJavaNodeAtOffset
(
offset
);
}
catch
(
Exception
e
)
{
LOG
.
error
(
"getNodeAtOffset error"
,
e
);
return
null
;
}
}
@Nullable
public
JumpPosition
getJumpLinkAtOffset
(
RSyntaxTextArea
textArea
,
int
offset
)
{
try
{
...
...
jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java
浏览文件 @
64fb587d
...
...
@@ -11,7 +11,7 @@ import org.fife.ui.rtextarea.SmartHighlightPainter;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
jadx.
gui.utils.JumpPosition
;
import
jadx.
api.JavaNode
;
class
MouseHoverHighlighter
extends
MouseMotionAdapter
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MouseHoverHighlighter
.
class
);
...
...
@@ -50,8 +50,8 @@ class MouseHoverHighlighter extends MouseMotionAdapter {
// don't repaint highlight
return
true
;
}
J
umpPosition
jump
=
codeLinkGenerator
.
getJumpLink
AtOffset
(
codeArea
,
tokenOffset
);
if
(
jump
==
null
)
{
J
avaNode
nodeAtOffset
=
codeLinkGenerator
.
getNode
AtOffset
(
codeArea
,
tokenOffset
);
if
(
nodeAtOffset
==
null
)
{
return
false
;
}
removeHighlight
();
...
...
jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java
浏览文件 @
64fb587d
...
...
@@ -2,6 +2,8 @@ package jadx.gui.ui.codearea;
import
java.awt.event.ActionEvent
;
import
javax.swing.event.PopupMenuEvent
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -19,6 +21,12 @@ public final class RenameAction extends JNodeMenuAction<JNode> {
super
(
NLS
.
str
(
"popup.rename"
),
codeArea
);
}
@Override
public
void
popupMenuWillBecomeVisible
(
PopupMenuEvent
e
)
{
super
.
popupMenuWillBecomeVisible
(
e
);
setEnabled
(
node
!=
null
&&
node
.
canRename
());
}
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
if
(
node
==
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录