1

嗨,我正在努力实现以下目标。我正在使用 grunt 进行 jshint 验证。

在我使用过的文件中的某处:

var logger = function () {
 // some ode
}

因为 logger 从未真正使用过 jshint 正确地向我显示以下错误。

W098: 'logger' is defined but never used.

我可以将未使用的设置为 false,它会完美地工作。但我实际上希望该选项发生在其他文件中并警告我未使用的变量。所以未使用的选项对我不起作用。

我还看到我可以使用这样的内联注释:* 导出的 EXPORTED_LIB */

但我实际上更愿意避免让我的文件被这些评论弄得乱七八糟。有没有机会我可以在我的 grunt 文件中指定导出的选项,例如全局变量。

这是我的 gruntfile 的 jshint 部分:

jshint: {
        // global options
        options: {
            camelcase: true,
            curly: true,
            eqeqeq: true,
            forin: true,
            immed: true,
            indent: 4,
            latedef: true,
            newcap: true,
            noarg: true,
            nonew: true,
            plusplus: false,
            quotmark: 'single',
            undef: true,
            unused: true,
            strict: true,
            maxparams: 4,
            maxdepth: 4,
            trailing: true,
            maxlen: 120,
            browser: true,
            node: true
        },
        server_logger: {
            src: [BASE_PATH_SERVER_LOGGER, '/**/*.js'].join(''),
            options: {
                browser: false
            }
        },
        client_logger: {
            src: [BASE_PATH_CLIENT_LOGGER, '/**/*.js'].join(''),
            options: {
                node: false,
                devel: true
            }

        }
    }

谢谢你的时间。

最好的问候 Playerwtf

更新:我在这里对 jshint github 存储库提出了问题

4

2 回答 2

1

这是最近修复的,现在可以按我的预期工作。

github问题

作为一个例子,我在我的 gruntfile 中这样使用它

client_logger: {
    expand: true,
    cwd: BASE_PATH_CLIENT_LOGGER,
    src: '**/*.js',
    options: {
        node: false,
        devel: true,
        globals: {
            logger: true,
            expect: true,
            it: true,
            describe: true,
            beforeEach: true,
            afterEach: true
        },
        exported: ['logger']
    }
}

但是 npm 模块还没有更新。如果你想让它工作,你必须手动从 jshint github 存储库中复制最新版本并替换当前模块中的那个,或者等到它更新。

于 2013-06-20T18:30:51.440 回答
0

我认为你可以在你的 src 文件中排除文件,所以你可以从你的基本 linting 中排除你的记录器文件(我想这里的记录器文件是 logger.js),并在未使用标志关闭的情况下单独对记录器文件进行 lint。

在此处阅读更多相关信息-> “!在模式的开头将否定匹配”

你可以设置 cwd (并留下加入的东西)。在文档中查看更多信息:动态构建文件对象

jshint: {
    // global options
    options: {
        ... your global options here
    },
    server_logger: {
        options: {
            browser: false
        },
        files: [{
          cwd: BASE_PATH_SERVER_LOGGER,
          src: ['/**/*.js', '!logger.js']
        }]
    },
    client_logger: {
        options: {
            node: false,
            devel: true
        },
        files: [{
          cwd: BASE_PATH_CLIENT_LOGGER,
          src: ['/**/*.js', '!logger.js']
        }]
    },
    lint_logger: {
        options: {
            unused: false
        },
        files: [{
          src: ['logger.js']
        }]
    }
}

不是 100% 确定这是否有效,但我认为它至少应该引导你走向正确的方向。如果您需要指定路径而不仅仅是要排除的文件,您可以将记录器文件放在单独的文件夹中,然后排除该文件夹!

于 2013-06-05T11:18:25.467 回答