Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
4d04f8ba
S
Scala Macro Tools
项目概览
梦境迷离
/
Scala Macro Tools
上一次同步 1 年多
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Scala Macro Tools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
4d04f8ba
编写于
7月 07, 2021
作者:
I
IceMimosa
提交者:
GitHub
7月 07, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add @log (#50)
上级
802dbdbf
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
6 deletion
+35
-6
intellij-plugin/src/main/resources/META-INF/plugin.xml
intellij-plugin/src/main/resources/META-INF/plugin.xml
+6
-2
intellij-plugin/src/main/scala/io/github/dreamylost/plugin/processor/clazz/LogProcessor.scala
...thub/dreamylost/plugin/processor/clazz/LogProcessor.scala
+18
-4
src/test/scala/io/github/dreamylost/LogTest.scala
src/test/scala/io/github/dreamylost/LogTest.scala
+11
-0
未找到文件。
intellij-plugin/src/main/resources/META-INF/plugin.xml
浏览文件 @
4d04f8ba
<idea-plugin>
<id>
Scala-Macro-Tools Plugin
</id>
<name>
Scala-Macro-Tools
</name>
<version>
0.1.
0
</version>
<version>
0.1.
2
</version>
<vendor>
Scala Macro Tools
</vendor>
<idea-version
since-build=
"201.0"
/>
<idea-version
since-build=
"203.0"
/>
<depends>
com.intellij.modules.platform
</depends>
<depends>
com.intellij.modules.lang
</depends>
<depends>
com.intellij.modules.java
</depends>
...
...
@@ -18,6 +19,9 @@
<a
href=
"https://github.com/jxnu-liguobin/scala-macro-tools/issues"
>
Issues
</a>
<br/>
<br/>
<b>
A plugin that implements Lombok-like functionality with Scala macros
</b>
<br/>
<br/>
<b>
Features
</b>
<ul>
<li>
@toString
</li>
...
...
intellij-plugin/src/main/scala/io/github/dreamylost/plugin/processor/clazz/LogProcessor.scala
浏览文件 @
4d04f8ba
package
io.github.dreamylost.plugin.processor.clazz
import
io.github.dreamylost.plugin.ScalaMacroNames
import
io.github.dreamylost.plugin.processor.
{
AbsProcessor
,
ProcessType
}
import
io.github.dreamylost.plugin.processor.ProcessType.ProcessType
import
org.jetbrains.plugins.scala.lang.psi.api.toplevel.typedef.
{
ScClass
,
ScTypeDefinition
}
import
org.jetbrains.plugins.scala.lang.psi.api.toplevel.typedef.
{
ScClass
,
Sc
Object
,
Sc
TypeDefinition
}
/**
* Desc: Processor for annotation toString
...
...
@@ -13,13 +14,26 @@ import org.jetbrains.plugins.scala.lang.psi.api.toplevel.typedef.{ ScClass, ScTy
*/
class
LogProcessor
extends
AbsProcessor
{
// annotation: log type name
private
val
logTypeName
=
"logType"
// default log expr
private
def
logExpr
(
log
:
String
=
"java.util.logging.Logger"
)
=
s
"private final val log: $log = ???"
override
def
process
(
source
:
ScTypeDefinition
,
typ
:
ProcessType
)
:
Seq
[
String
]
=
{
typ
match
{
case
ProcessType
.
Field
=>
source
match
{
case
_:
ScClass
=>
// TODO: support others log type
Seq
(
s
"private final val log: org.slf4j.Logger = ???"
)
case
clazz
@
(
_:
ScClass
|
_
:
ScObject
)
=>
val
an
=
clazz
.
annotations
(
ScalaMacroNames
.
LOG
).
last
an
.
annotationExpr
.
getAttributes
.
findLast
(
_
.
name
==
logTypeName
)
match
{
case
Some
(
kv
)
if
kv
.
getChildren
.
exists
(
_
.
getText
.
equalsIgnoreCase
(
"Slf4j"
))
=>
Seq
(
logExpr
(
"org.slf4j.Logger"
))
case
Some
(
kv
)
if
kv
.
getChildren
.
exists
(
_
.
getText
.
equalsIgnoreCase
(
"Log4j2"
))
=>
Seq
(
logExpr
(
"org.apache.logging.log4j.Logger"
))
case
_
=>
Seq
(
logExpr
())
}
case
_
=>
Nil
}
case
_
=>
Nil
...
...
src/test/scala/io/github/dreamylost/LogTest.scala
浏览文件 @
4d04f8ba
...
...
@@ -154,4 +154,15 @@ class LogTest extends AnyFlatSpec with Matchers {
|"""
.
stripMargin
should
compile
}
"log for plugin test"
should
"compile ok"
in
{
@log
class
TestLog1
()
{
log
.
info
(
""
)
}
@log
object
TestLog1
{
log
.
info
(
""
)
}
@log
(
logType
=
io
.
github
.
dreamylost
.
LogType
.
Slf4j
)
class
TestLog2
()
{
log
.
info
(
""
)
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录