首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目录中所有文件的复杂程度

目录中所有文件的复杂程度
EN

Stack Overflow用户
提问于 2016-04-28 13:33:02
回答 2查看 230关注 0票数 1

我想对目录中的所有文件运行咕噜-复杂性吗?我想要这种输出。有办法吗?我的js文件都在一个名为"js“的子目录下。这是我的gruntfile:

代码语言:javascript
复制
/*global module:false*/
module.exports = function(grunt) {

    // Project configuration.
    grunt.initConfig({
        // Task configuration.
        complexity: {
            generic: {
                src: ['grunt.js', 'js/*'],
                //exclude: ['doNotTest.js'],
                options: {
                    breakOnErrors: false,
                    jsLintXML: 'report.xml',         // create XML JSLint-like report 
                    checkstyleXML: 'checkstyle.xml', // create checkstyle report 
                    pmdXML: 'pmd.xml',               // create pmd report 
                    errorsOnly: false,               // show only maintainability errors 
                    cyclomatic: [3, 7, 12],          // or optionally a single value, like 3 
                    halstead: [8, 13, 20],           // or optionally a single value, like 8 
                    maintainability: 100,
                    hideComplexFunctions: false,     // only display maintainability 
                    broadcast: false                 // broadcast data over event-bus 
                }
            }
        }
    });

    // These plugins provide necessary tasks.
    grunt.loadNpmTasks('grunt-complexity');

    // Default task.
    grunt.registerTask('default', 'complexity');
};

我只是通过键入

代码语言:javascript
复制
grunt

从命令行。如果我输入这个

代码语言:javascript
复制
grunt complexity js/* 

我得到了

代码语言:javascript
复制
Warning: Task "js/AgencyMediaController.js" not found. Use --force to continue.

Aborted due to warnings.

AgencyMediaController.js是我的js目录中的第一个文件。所以它看了一下,列出了文件,然后就崩溃了。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-19 10:51:33

我很久没问这个问题了。我刚刚又碰到了同样的问题,找到了答案,下面是:

最后,结果是我试图分析的其中一个文件导致了坠机。这个特定的Javascript环境允许使用类C预处理器指令,并且Javascript文件具有如下内容:

代码语言:javascript
复制
var mySettings = {
    //#ifdef FOO_CONSTANT
    setting : constants.FOO_SETTING
    //#endif
    //#ifdef BAR_CONSTANT
    setting : constants.BAR_SETTING
    //#endif
};

我猜问题是,如果这是严格按照Javascript读取的,预处理指令只是平面注释,这两个属性之间缺少一个逗号,因此Grunt复杂性无法读取这一点,因为语法错误。使用--force没有差别。

令人讨厌的是,这是所有错误显示的:

代码语言:javascript
复制
$ grunt --force
Running "complexity:generic" (complexity) task

Warning: undefined: Unexpected token, expected , (17570:1) Used --force, continuing.

Done, but with warnings.

因此,虽然它确实提到了expected , (175:1),但它没有说明在这个项目中的几个Javascript文件中发现了哪些问题!

只要将exclude: ['path/to/MyFileWithPreprocessorDirectives.js']添加到Gruntfile.js中,以便将该文件从分析中排除在外,我就可以绕过这个问题。

票数 0
EN

Stack Overflow用户

发布于 2016-04-28 13:42:49

示例:对于js文件夹中的所有JS文件:

代码语言:javascript
复制
src: ['js/**/*.js']

对于scss文件夹中的ass .scss文件:

代码语言:javascript
复制
src: ['scss/**/*.scss']

我建议您为src文件夹创建一个配置,以便在将来的项目中更改文件夹:

样本:

代码语言:javascript
复制
            var src;
            config.src = src = {
                 sassMain        : 'scss/main.scss',
                 distFolder      : 'public/stylesheets/lovelycss.dist.css',
                 devFolder       : 'public/stylesheets/lovelycss.dev.css',
                 libFolder       : 'lib/**/*.js',
                 sassFolder      : 'scss/**/*.scss',
                 spriteCssFolder : 'scss/helpers/_sprite.scss',
                 spriteDestImg   : 'public/images/sprite/spritesheet.png',
                 spriteSrc       : 'public/images/min/*.{png,jpg,gif}',
                 imageminCwd     : 'public/images/',
                 imageminDest    : 'public/images/min'


            };


           //grunt Watch ===============================
            config.watch = {
                 scripts: {
                    files: ["<%= src.libFolder %>", "<%= src.sassFolder %>"]
                    ,tasks: ["dev", "sass:dist"]
                    //,tasks: ["dev",'sass:dist']
                 }
            }

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36916286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档