加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

模块在“1”中结束,那么它是不会的

发布时间:2020-12-15 22:04:56 所属栏目:大数据 来源:网络整理
导读:有一个简单的模块 package Rrr;use 5.014;use warnings;use namespace::sweep;use Moo;use Method::Signatures::Simple;BEGIN { our $VERSION = '0.0.1';}has 'root' = ( is = 'rw',default = 'root');method func { say 'This is the func method from ' .
有一个简单的模块
package Rrr;
use 5.014;
use warnings;
use namespace::sweep;
use Moo;
use Method::Signatures::Simple;

BEGIN {
    our $VERSION = '0.0.1';
}

has 'root' => (
    is => 'rw',default => 'root'
);

method func {
    say 'This is the func method from ' . __PACKAGE__ . ' with value: ',$self->root;
}

1;

谚语-1说

Code is not tidy at line 1,column 1.  See page 33 of PBP.  (Severity: 1)
Module does not end with "1;" at line 17,column 1.  Must end with a recognizable true value.  (Severity: 4)
Return value of flagged function ignored - say at line 18,column 5.  See pages 208,278 of PBP.  (Severity: 1)

如何使百灵达快乐?

编辑 – 基于@ toolic的评论

是的,整洁有助于第一个问题(但代码不整齐在第1行,第1列是不是很有帮助的消息),因为差异是:

13c13
<     is => 'rw',---
>     is      => 'rw',18c18,19
<     say 'This is the func method from ' . __PACKAGE__ . ' with value: ',$self->root;
---
>     say 'This is the func method from ' . __PACKAGE__ . ' with value: ',>       $self->root;

但还是得到:

Module does not end with "1;" at line 17,278 of PBP.  (Severity: 1)

我的诡计:

$perlcritic --version
1.125

解决方法

它看起来像Method :: Signatures :: Simple抛出的perlcritic的方法关键字.请注意PPI如何解析以下程序的差异:
$tools/ppidump 'method foo { 1 } 1;'
                    PPI::Document
                      PPI::Statement
[    1,1,1 ]     PPI::Token::Word         'method'
[    1,8,8 ]     PPI::Token::Word         'foo'
                        PPI::Structure::Block   { ... }
                          PPI::Statement
[    1,14,14 ]         PPI::Token::Number   '1'
[    1,18,18 ]     PPI::Token::Number       '1'
[    1,19,19 ]     PPI::Token::Structure    ';'

$tools/ppidump 'sub foo { 1 } 1;'
                    PPI::Document
                      PPI::Statement::Sub
[    1,1 ]     PPI::Token::Word         'sub'
[    1,5,5 ]     PPI::Token::Word         'foo'
                        PPI::Structure::Block   { ... }
                          PPI::Statement
[    1,11,11 ]         PPI::Token::Number   '1'
                      PPI::Statement
[    1,15,15 ]     PPI::Token::Number       '1'
[    1,16,16 ]     PPI::Token::Structure    ';'

当使用方法时,整个程序被视为单个语句;当使用sub,1;被视为单独的声明.

为了使perlcritic安静,您可以在方法的关闭括号后添加分号:

method func {
    ...
};

1;

或者替代地

method func {
    ...
}

;1;

不过,我认为amon在评论中提出了一个好点:

perlcritic can’t handle syntax extensions such as method signatures…Due to such issues,I tend to choose between syntax extensions and perlcritic – and sadly have to prefer static analysis over syntactic sugar in most cases.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读