什么是开发和调试NetLogo扩展的正确工作流程

use*_*791 4 java api netbeans netlogo

我正在使用Netbeans开发NetLogo扩展,并且我希望收到关于正确流程的建议以优化我的代码......我通常在NetBeans中编写代码,然后使用此添加到我的构建中在NetBeans中编译扩展. xml(我在这里复制它,因为它可能对某人有用):

<target name="-pre-init">
    <property name="project.name" value="myextension" />
    <property name="class.manager" value="org.nlogo.extensions.myextension.MyClassManager" />
    <manifest file="manifest.mf">
        <attribute name="Manifest-Version" value="1.0" />           
        <attribute name="Extension-Name" value="${project.name}" />
        <attribute name="Class-Manager" value="${class.manager}" />
        <attribute name="NetLogo-Extension-API-Version" value="5.0" />
    </manifest>
</target>
<target name="-post-jar">
    <delete file="manifest.mf"/>
</target>
Run Code Online (Sandbox Code Playgroud)

此时,我将.jar拖到右侧文件夹中,并从终端打开NetLogo模型,以查看我的扩展是否写了一些东西/错误/无论如何......因为我不是计算机科学家,我想知道是否这是继续进行的正确方法......我知道它有效,但如果我必须看到我的代码在哪里慢或消耗内存怎么办?也许我可以使用调试器对其进行优化,但在NetBeans之外我不知道如何做到这一点......

我很欣赏专家开发人员最常用的工作流程的建议......

最好的问候,西蒙娜

Bry*_*ead 5

好问题.我很好奇其他人会如何回应.

我创建了一个符号链接,从扩展使其jar的位置到NetLogo扩展文件夹中的适当命名的文件夹.所以,例如,如果我正在进行网络扩展,我将运行:

ln -s /path/to/NW-Extension /path/to/Netlogo\ 5.0.x/extensions/nw

这样,您就不必经历在每次构建时拖动jar的麻烦.

我知道它有效,但如果我必须看到我的代码在哪里慢或消耗内存怎么办?

对于分析,我使用VisualVM.我知道它随NetBeans一起提供,但您也可以将它作为独立程序运行.它可以连接到任何正在运行的JVM程序.因此,在测试扩展时,只需告诉VisualVM连接到NetLogo(尽管它通常显示为"Local Application pid 42138"或其他内容).采样器非常适合分析.

我在处理扩展时通常不使用调试器.但是,您应该能够从源运行NetLogo(使用5.0.x).我不使用NetBeans,但您应该能够将其指向特定jar的源代码,以便NetBeans知道在哪里查找jar中类的源代码.这应该允许您无缝调试扩展.

这也允许您为扩展编写语言测试.为此,您甚至不需要了解NetBeans的内容; 你可以sbt(它包含在NetLogo中,是构建和运行它的最简单方法).有关详细信息,请参阅我链接到的Wiki页面.