有没有一种自动获取Haxe项目中未使用类列表的方法?我没有找到相关文档,但信息应该可以在某个地方获得。就像死代码消除后的差异一样。
-D dce-debug
进行编译,您可以获得一个DCE日志。 (手册中的相关条目) 例如,使用haxe --interp -main Hello -D dce-debug
编译class Hello { static function main() trace("Hello!"); }
会产生类似以下的内容:...
[DCE] Removed field Type.getClass
[DCE] Removed field Type.getEnum
[DCE] Removed field Type.getSuperClass
[DCE] Removed field Type.getClassName
[DCE] Removed field Type.getEnumName
[DCE] Removed field Type.resolveClass
[DCE] Removed field Type.resolveEnum
[DCE] Removed field Type.createInstance
[DCE] Removed field Type.createEmptyInstance
[DCE] Removed field Type.createEnum
[DCE] Removed field Type.createEnumIndex
[DCE] Removed field Type.getInstanceFields
[DCE] Removed field Type.getClassFields
[DCE] Removed field Type.getEnumConstructs
[DCE] Removed field Type.typeof
[DCE] Removed field Type.enumEq
[DCE] Removed field Type.enumConstructor
[DCE] Removed field Type.enumParameters
[DCE] Removed field Type.enumIndex
[DCE] Removed field Type.allEnums
[DCE] Removed class Type
[DCE] Removed enum ValueType
...
最后,我混合了两种解决方案来得到完整的答案。
dce-debug
和源路径中的文件进行比较。感谢@jonasmalacofilho您可以在gist上找到我的脚本:https://gist.github.com/aliokan/0a9abded7c079ad0260f651245964db2
-D dce-debug
会在字段级别上返回日志,而不是类级别。我将使用-D dump=pretty
并在源文件和转储文件列表之间进行差异比较。 - ali_o_kan-D dce-debug
还会输出已删除的类和其他类型:[DCE] Removed class haxe.io.Bytes
。你不能使用grep
(Unix/Linux/Mac)或find
(Windows)过滤这些行吗? - Jonas Malacodce-debug
只提供了部分答案。因为 DCE 仅分析项目中使用的代码。如果您的项目中没有对某个类的引用(从主类开始),它将不会出现在 DCE 日志中。 - ali_o_kan