Code Monkey home page Code Monkey logo

Comments (5)

dayongxie avatar dayongxie commented on May 12, 2024

自己调试了一下,发现造成这个问题的原因
插件在调用luacheck的时候,命令行参数过长导致的
命令行的参数里包含了项目中所有的全局符号,恰好因为我项目里存在不规范的lua代码

Localization = {
    AbilityLimitWarnning = "",
    AbortCityWar = "",
    Abroad = "",
    Academy1  = "",
    Academy11  = "",
    Academy12  = "",
    Academy13  = "",
    Academy14  = "",
    Academy15  = "",
    AcademyIncreament = "",
    ActivityCalendar = "",
    ActivityLoginDay = "",
    ActivityFinished = "",
    ActivityLeftTime = "",
    AccountBlock = "",

}

以上代码所有的Localization内部字段都会作为全局符号传入到luacheck命令中,导致项目中所有lua文件的lualint都无法正常工作。

非常感谢你们提供如此好用的工具,希望越来越好,春节快乐!

from luapanda.

GrandZhuo avatar GrandZhuo commented on May 12, 2024

感谢反馈!
之前我们用你上传的文件单独测试过,功能正常所以关闭了issue。
关于命令行参数过长导致luacheck功能异常的问题我们会再测试一下。
调用luacheck时将全局符号传递给luacheck是为了避免出现使用未定义的全局符号的warning,因为调用luacheck是针对单个文件的,而文件中使用到的全局符号可能定义在工程中其他文件,所以我们统一忽略了全局符号。
如果传递给luacheck的参数过多会导致luacheck运行异常,我们会在这里做一些处理,初步考虑看是否方便只将本文件内的全局符号传递给luacheck,并对数量做限制。如果你对这个问题有其他见解也可以和我们一起讨论,当然,更欢迎PR,一起参与到LuaPanda的开发维护中!

from luapanda.

dayongxie avatar dayongxie commented on May 12, 2024

谢谢回复,我传的代码里在lua文件中直接将模块声明全局变量的做法应该不符合lua的规范,规范的做法是声明为local,然后在文件末尾return。
所以我认为调用luacheck的时候可以不传代码中的全局符号,有luapanda配置中的全局符号就够了,或者用.luacheckrc配置文件配置全局符号的方案更灵活一些

from luapanda.

wuyigq avatar wuyigq commented on May 12, 2024

@GrandZhuo 我的cocos2dx-lua工程也遇到了同样的问题,查看代码发现原来的luacheck global参数是将工程中所有全局变量Symbol方式拼接并传入,例如在上面2楼给到的例子只需传入Localization就可以了,但实际上可能会传入 Localization.AbilityLimitWarnning Localization.AbortCityWar ...这样几十乃至上千个字符串,我提交的PR修改了这个情况,只会传入Localization等顶级全局变量名,@dayongxie 你可以看下有没有解决你的问题

from luapanda.

GrandZhuo avatar GrandZhuo commented on May 12, 2024

@GrandZhuo 我的cocos2dx-lua工程也遇到了同样的问题,查看代码发现原来的luacheck global参数是将工程中所有全局变量Symbol方式拼接并传入,例如在上面2楼给到的例子只需传入Localization就可以了,但实际上可能会传入 Localization.AbilityLimitWarnning Localization.AbortCityWar ...这样几十乃至上千个字符串,我提交的PR修改了这个情况,只会传入Localization等顶级全局变量名,@dayongxie 你可以看下有没有解决你的问题

感谢PR!

from luapanda.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.