diff --git a/aspectd_impl/lib/aop_impl.dart b/aspectd_impl/lib/aop_impl.dart index ba6148c..501190a 100644 --- a/aspectd_impl/lib/aop_impl.dart +++ b/aspectd_impl/lib/aop_impl.dart @@ -106,16 +106,16 @@ import 'package:aspectd/aspectd.dart'; // } @Aspect() -@pragma("vm:entry-point") +@pragma('vm:entry-point') class InjectDemo{ - @Inject("package:example/main.dart","","+injectDemo", lineNum:27) - @pragma("vm:entry-point") + @Inject('package:example/main.dart','','+injectDemo', lineNum:27) + @pragma('vm:entry-point') static void onInjectDemoHook1() { print('Aspectd:KWLM51'); } - @Inject("package:example/main.dart","C","+C", lineNum:195) - @pragma("vm:entry-point") + @Inject('package:example/main.dart','C','+C', lineNum:195) + @pragma('vm:entry-point') static void onInjectDemoHook3() { print('Aspectd:KWLM52'); } diff --git a/example/lib/main.dart b/example/lib/main.dart index 081e54d..9bbbe6f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -12,7 +12,7 @@ class Observer { } void injectDemo(List observers) { - int a = 10; + const int a = 10; if (a > 5) { print('[KWLM]:if1'); } @@ -191,9 +191,7 @@ class B { } class C with A,B { - C(){ - - } + C(); void fc() { } diff --git a/lib/src/flutter_frontend_server/server.dart b/lib/src/flutter_frontend_server/server.dart index 0613730..8e823d7 100644 --- a/lib/src/flutter_frontend_server/server.dart +++ b/lib/src/flutter_frontend_server/server.dart @@ -44,7 +44,7 @@ class _FlutterFrontendCompiler implements frontend.CompilerInterface { @override Future compile(String filename, ArgResults options, {IncrementalCompiler generator}) async { - List transformers = + final List transformers = FlutterTarget.flutterProgramTransformers; if (!transformers.contains(aspectdAopTransformer)) { transformers.add(aspectdAopTransformer); diff --git a/lib/src/transformer/aop/aop_transformer.dart b/lib/src/transformer/aop/aop_transformer.dart index 3d1027c..21f915e 100644 --- a/lib/src/transformer/aop/aop_transformer.dart +++ b/lib/src/transformer/aop/aop_transformer.dart @@ -161,9 +161,7 @@ class AspectdAopTransformer extends FlutterProgramTransformer { continue; } final AopItemInfo aopItemInfo = _processAopMember(member); - if (aopItemInfo != null) { - aopItemInfoList.add(aopItemInfo); - } + aopItemInfoList.add(aopItemInfo); } } } diff --git a/lib/src/transformer/aop/aop_utils.dart b/lib/src/transformer/aop/aop_utils.dart index 67b9bfd..635aa19 100644 --- a/lib/src/transformer/aop/aop_utils.dart +++ b/lib/src/transformer/aop/aop_utils.dart @@ -207,7 +207,7 @@ class AopUtils { //重定向到AOP的函数体中去 final Arguments pointCutConstructorArguments = Arguments.empty(); final List sourceInfos = []; - sourceInfo?.forEach((String key, String value) { + sourceInfo.forEach((String key, String value) { sourceInfos.add(MapEntry(StringLiteral(key), StringLiteral(value))); }); pointCutConstructorArguments.positional.add(MapLiteral(sourceInfos)); diff --git a/lib/src/transformer/aop/aspectd_aop_call_visitor.dart b/lib/src/transformer/aop/aspectd_aop_call_visitor.dart index cf09948..fe39a82 100644 --- a/lib/src/transformer/aop/aspectd_aop_call_visitor.dart +++ b/lib/src/transformer/aop/aspectd_aop_call_visitor.dart @@ -49,7 +49,7 @@ class AspectdAopCallVisitor extends Transformer { } final AopItemInfo aopItemInfo = _filterAopItemInfo( _aopItemInfoList, procedureImportUri, cls.name, functionName, true); - if (aopItemInfo?.mode == AopMode.Call && + if (aopItemInfo.mode == AopMode.Call && AopUtils.checkIfSkipAOP(aopItemInfo, _curLibrary) == false) { return transformConstructorInvocation( constructorInvocation, aopItemInfo); @@ -74,8 +74,7 @@ class AspectdAopCallVisitor extends Transformer { ?.targetReference?.canonicalName?.parent?.parent?.parent?.name; } //Library Static - if ((procedureName?.length ?? 0) > 0 && - tempName != null && + if ((procedureName.length ?? 0) > 0 && tempName.isNotEmpty && _libraryMap[tempName] != null) { final Library originalLibrary = _libraryMap[tempName]; @@ -109,7 +108,7 @@ class AspectdAopCallVisitor extends Transformer { final String libraryImportUri = library.importUri.toString(); final AopItemInfo aopItemInfo = _filterAopItemInfo( _aopItemInfoList, libraryImportUri, '', procedure.name.name, true); - if (aopItemInfo?.mode == AopMode.Call && + if (aopItemInfo.mode == AopMode.Call && AopUtils.checkIfSkipAOP(aopItemInfo, _curLibrary) == false) { return transformLibraryStaticMethodInvocation( staticInvocation, procedure, aopItemInfo); @@ -120,7 +119,7 @@ class AspectdAopCallVisitor extends Transformer { (cls.parent as Library).importUri.toString(); final AopItemInfo aopItemInfo = _filterAopItemInfo(_aopItemInfoList, procedureImportUri, cls.name, procedure.name.name, true); - if (aopItemInfo?.mode == AopMode.Call && + if (aopItemInfo.mode == AopMode.Call && AopUtils.checkIfSkipAOP(aopItemInfo, _curLibrary) == false) { return transformClassStaticMethodInvocation( staticInvocation, aopItemInfo); @@ -154,7 +153,7 @@ class AspectdAopCallVisitor extends Transformer { } final AopItemInfo aopItemInfo = _filterAopItemInfo( _aopItemInfoList, importUri, clsName, methodName, false); - if (aopItemInfo?.mode == AopMode.Call && + if (aopItemInfo.mode == AopMode.Call && AopUtils.checkIfSkipAOP(aopItemInfo, _curLibrary) == false) { return transformInstanceMethodInvocation(methodInvocation, aopItemInfo); } @@ -194,7 +193,6 @@ class AspectdAopCallVisitor extends Transformer { //Class Constructor Invocation StaticInvocation transformConstructorInvocation( ConstructorInvocation constructorInvocation, AopItemInfo aopItemInfo) { - assert(aopItemInfo.mode != null); if (_invocationExpressionMapping[constructorInvocation] != null) { return _invocationExpressionMapping[constructorInvocation]; @@ -236,7 +234,6 @@ class AspectdAopCallVisitor extends Transformer { //Instance Method Invocation MethodInvocation transformInstanceMethodInvocation( MethodInvocation methodInvocation, AopItemInfo aopItemInfo) { - assert(aopItemInfo.mode != null); if (_invocationExpressionMapping[methodInvocation] != null) { return _invocationExpressionMapping[methodInvocation]; @@ -362,7 +359,6 @@ class AspectdAopCallVisitor extends Transformer { //Class Static Method Invocation StaticInvocation transformClassStaticMethodInvocation( StaticInvocation staticInvocation, AopItemInfo aopItemInfo) { - assert(aopItemInfo.mode != null); if (_invocationExpressionMapping[staticInvocation] != null) { return _invocationExpressionMapping[staticInvocation]; @@ -430,7 +426,6 @@ class AspectdAopCallVisitor extends Transformer { StaticInvocation staticInvocation, Procedure procedure, AopItemInfo aopItemInfo) { - assert(aopItemInfo.mode != null); if (_invocationExpressionMapping[staticInvocation] != null) { return _invocationExpressionMapping[staticInvocation]; diff --git a/lib/src/transformer/aop/aspectd_aop_execute_visitor.dart b/lib/src/transformer/aop/aspectd_aop_execute_visitor.dart index 8210148..f4b3f62 100644 --- a/lib/src/transformer/aop/aspectd_aop_execute_visitor.dart +++ b/lib/src/transformer/aop/aspectd_aop_execute_visitor.dart @@ -20,11 +20,11 @@ class AspectdAopExecuteVisitor extends RecursiveVisitor { @override void visitLibrary(Library library) { - String importUri = library.importUri.toString(); + final String importUri = library.importUri.toString(); bool matches = false; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && !matches; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if ((aopItemInfo.isRegex && RegExp(aopItemInfo.importUri).hasMatch(importUri)) || (!aopItemInfo.isRegex && importUri == aopItemInfo.importUri)) { @@ -39,11 +39,11 @@ class AspectdAopExecuteVisitor extends RecursiveVisitor { @override void visitClass(Class cls) { - String clsName = cls.name; + final String clsName = cls.name; bool matches = false; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && !matches; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if ((aopItemInfo.isRegex && RegExp(aopItemInfo.clsName).hasMatch(clsName)) || (!aopItemInfo.isRegex && clsName == aopItemInfo.clsName)) { @@ -58,11 +58,11 @@ class AspectdAopExecuteVisitor extends RecursiveVisitor { @override void visitProcedure(Procedure node) { - String procedureName = node.name.name; + final String procedureName = node.name.name; AopItemInfo matchedAopItemInfo; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && matchedAopItemInfo == null; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if ((aopItemInfo.isRegex && RegExp(aopItemInfo.methodName).hasMatch(procedureName)) || (!aopItemInfo.isRegex && procedureName == aopItemInfo.methodName)) { diff --git a/lib/src/transformer/aop/aspectd_aop_inject_visitor.dart b/lib/src/transformer/aop/aspectd_aop_inject_visitor.dart index 02ee0c8..1457869 100644 --- a/lib/src/transformer/aop/aspectd_aop_inject_visitor.dart +++ b/lib/src/transformer/aop/aspectd_aop_inject_visitor.dart @@ -51,11 +51,11 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { @override void visitLibrary(Library library) { - String importUri = library.importUri.toString(); + final String importUri = library.importUri.toString(); bool matches = false; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && !matches; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if (!aopItemInfo.isRegex && importUri == aopItemInfo.importUri) { matches = true; break; @@ -68,11 +68,11 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { @override void visitClass(Class cls) { - String clsName = cls.name; + final String clsName = cls.name; bool matches = false; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && !matches; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if (!aopItemInfo.isRegex && clsName == aopItemInfo.clsName) { matches = true; break; @@ -86,10 +86,10 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { @override void visitConstructor(Constructor constructor) { AopItemInfo matchedAopItemInfo; - int aopItemInfoListLen = _aopItemInfoList.length; - Class cls = constructor.parent; + final int aopItemInfoListLen = _aopItemInfoList.length; + final Class cls = constructor.parent; for (int i = 0; i < aopItemInfoListLen && matchedAopItemInfo == null; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if (cls.name + (constructor.name.name == '' ? '' @@ -115,11 +115,11 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { @override void visitProcedure(Procedure node) { - String procedureName = node.name.name; + final String procedureName = node.name.name; AopItemInfo matchedAopItemInfo; - int aopItemInfoListLen = _aopItemInfoList.length; + final int aopItemInfoListLen = _aopItemInfoList.length; for (int i = 0; i < aopItemInfoListLen && matchedAopItemInfo == null; i++) { - AopItemInfo aopItemInfo = _aopItemInfoList[i]; + final AopItemInfo aopItemInfo = _aopItemInfoList[i]; if (!aopItemInfo.isRegex && procedureName == aopItemInfo.methodName && aopItemInfo.isStatic == node.isStatic) { @@ -221,15 +221,13 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { @override Block visitBlock(Block node) { node.visitChildren(this); - if (_curAopStatementsInsertInfo != null) { - final Library library = _curAopStatementsInsertInfo.library; - final Source source = _curAopStatementsInsertInfo.source; - final AopItemInfo aopItemInfo = _curAopStatementsInsertInfo.aopItemInfo; - final List aopInsertStatements = - _curAopStatementsInsertInfo.aopInsertStatements; - insertStatementsToBody( - library, source, node, aopItemInfo, aopInsertStatements); - } + final Library library = _curAopStatementsInsertInfo.library; + final Source source = _curAopStatementsInsertInfo.source; + final AopItemInfo aopItemInfo = _curAopStatementsInsertInfo.aopItemInfo; + final List aopInsertStatements = + _curAopStatementsInsertInfo.aopInsertStatements; + insertStatementsToBody( + library, source, node, aopItemInfo, aopInsertStatements); return node; } @@ -374,23 +372,21 @@ class AspectdAopInjectVisitor extends RecursiveVisitor { } void checkIfInsertInFunction(FunctionNode functionNode) { - if (_curAopStatementsInsertInfo != null) { - final int lineFrom = AopUtils.getLineNumBySourceAndOffset( - _curAopStatementsInsertInfo.source, functionNode.fileOffset); - final int lineTo = AopUtils.getLineNumBySourceAndOffset( - _curAopStatementsInsertInfo.source, functionNode.fileEndOffset); - final int expectedLineNum = - _curAopStatementsInsertInfo.aopItemInfo.lineNum; - if (expectedLineNum >= lineFrom && expectedLineNum <= lineTo) { - final Library library = _curAopStatementsInsertInfo.library; - final Source source = _curAopStatementsInsertInfo.source; - final AopItemInfo aopItemInfo = _curAopStatementsInsertInfo.aopItemInfo; - final List aopInsertStatements = - _curAopStatementsInsertInfo.aopInsertStatements; - _curAopStatementsInsertInfo = null; - functionNode.body = insertStatementsToBody( - library, source, functionNode, aopItemInfo, aopInsertStatements); - } + final int lineFrom = AopUtils.getLineNumBySourceAndOffset( + _curAopStatementsInsertInfo.source, functionNode.fileOffset); + final int lineTo = AopUtils.getLineNumBySourceAndOffset( + _curAopStatementsInsertInfo.source, functionNode.fileEndOffset); + final int expectedLineNum = + _curAopStatementsInsertInfo.aopItemInfo.lineNum; + if (expectedLineNum >= lineFrom && expectedLineNum <= lineTo) { + final Library library = _curAopStatementsInsertInfo.library; + final Source source = _curAopStatementsInsertInfo.source; + final AopItemInfo aopItemInfo = _curAopStatementsInsertInfo.aopItemInfo; + final List aopInsertStatements = + _curAopStatementsInsertInfo.aopInsertStatements; + _curAopStatementsInsertInfo = null; + functionNode.body = insertStatementsToBody( + library, source, functionNode, aopItemInfo, aopInsertStatements); } }