Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ql04210214
jadx
提交
eb6d145d
J
jadx
项目概览
ql04210214
/
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 搜索 >>
提交
eb6d145d
编写于
3月 03, 2014
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: fix indent for anonymous classes
上级
63c003a0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
74 addition
and
9 deletion
+74
-9
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
+10
-9
jadx-core/src/test/java/jadx/api/InternalJadxTest.java
jadx-core/src/test/java/jadx/api/InternalJadxTest.java
+9
-0
jadx-core/src/test/java/jadx/tests/internal/inner/TestAnonymousClass3.java
...t/java/jadx/tests/internal/inner/TestAnonymousClass3.java
+55
-0
未找到文件。
jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
浏览文件 @
eb6d145d
...
...
@@ -95,6 +95,14 @@ public class InsnGen {
return
code
;
}
public
void
addArgDot
(
CodeWriter
code
,
InsnArg
arg
)
throws
CodegenException
{
int
len
=
code
.
length
();
addArg
(
code
,
arg
,
true
);
if
(
len
!=
code
.
length
())
{
code
.
add
(
'.'
);
}
}
public
void
addArg
(
CodeWriter
code
,
InsnArg
arg
)
throws
CodegenException
{
addArg
(
code
,
arg
,
true
);
}
...
...
@@ -152,11 +160,7 @@ public class InsnGen {
return
;
}
}
int
len
=
code
.
length
();
addArg
(
code
,
arg
);
if
(
code
.
length
()
!=
len
)
{
code
.
add
(
'.'
);
}
addArgDot
(
code
,
arg
);
code
.
add
(
field
.
getName
());
}
...
...
@@ -609,10 +613,7 @@ public class InsnGen {
InsnArg
arg
=
insn
.
getArg
(
0
);
// FIXME: add 'this' for equals methods in scope
if
(!
arg
.
isThis
())
{
CodeWriter
argStr
=
arg
(
arg
);
if
(!
argStr
.
isEmpty
())
{
code
.
add
(
argStr
).
add
(
'.'
);
}
addArgDot
(
code
,
arg
);
}
k
++;
break
;
...
...
jadx-core/src/test/java/jadx/api/InternalJadxTest.java
浏览文件 @
eb6d145d
package
jadx.api
;
import
jadx.core.Jadx
;
import
jadx.core.codegen.CodeWriter
;
import
jadx.core.dex.attributes.AttributeFlag
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.core.dex.nodes.MethodNode
;
...
...
@@ -149,6 +150,14 @@ public abstract class InternalJadxTest {
}
}
protected
String
makeIndent
(
int
indent
)
{
StringBuilder
sb
=
new
StringBuilder
(
indent
*
CodeWriter
.
INDENT
.
length
());
for
(
int
i
=
0
;
i
<
indent
;
i
++)
{
sb
.
append
(
CodeWriter
.
INDENT
);
}
return
sb
.
toString
();
}
// Use only for debug purpose
@Deprecated
protected
void
setOutputCFG
()
{
...
...
jadx-core/src/test/java/jadx/tests/internal/inner/TestAnonymousClass3.java
0 → 100644
浏览文件 @
eb6d145d
package
jadx.tests.internal.inner
;
import
jadx.api.InternalJadxTest
;
import
jadx.core.dex.nodes.ClassNode
;
import
org.junit.Test
;
import
static
org
.
hamcrest
.
CoreMatchers
.
containsString
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
class
TestAnonymousClass3
extends
InternalJadxTest
{
public
static
class
TestCls
{
public
static
class
Inner
{
private
int
f
;
private
double
d
;
public
void
test
()
{
new
Thread
()
{
@Override
public
void
run
()
{
int
a
=
f
--;
p
(
a
);
f
+=
2
;
f
*=
2
;
a
=
++
f
;
p
(
a
);
d
/=
3
;
}
public
void
p
(
int
a
)
{
}
}.
start
();
}
}
}
@Test
public
void
test
()
{
ClassNode
cls
=
getClassNode
(
TestCls
.
class
);
String
code
=
cls
.
getCode
().
toString
();
System
.
out
.
println
(
code
);
assertThat
(
code
,
containsString
(
makeIndent
(
4
)
+
"public void run() {"
));
assertThat
(
code
,
containsString
(
makeIndent
(
3
)
+
"}.start();"
));
// assertThat(code, not(containsString("synthetic")));
// assertThat(code, not(containsString("AnonymousClass_")));
// assertThat(code, containsString("a = f--;"));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录