Skip to content

Commit 426bf49

Browse files
committed
THRIFT-5064: Introduce Perl::Critic into the SCA
1 parent 1668e19 commit 426bf49

13 files changed

Lines changed: 72 additions & 17 deletions

File tree

.github/workflows/sca.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,46 @@ jobs:
275275
run: |
276276
./vendor/bin/phpstan analyse -c lib/php/phpstan.neon --no-progress --error-format=github
277277
278+
lib-perl:
279+
needs: compiler
280+
runs-on: ubuntu-24.04
281+
steps:
282+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
283+
with:
284+
persist-credentials: false
285+
286+
- name: Install dependencies
287+
run: |
288+
sudo apt-get update -yq
289+
# shellcheck disable=SC2086
290+
sudo apt-get install -y --no-install-recommends g++ $BUILD_DEPS libperl-critic-perl
291+
292+
- name: Configure
293+
run: |
294+
./bootstrap.sh
295+
# shellcheck disable=SC2086
296+
./configure $CONFIG_ARGS_FOR_SCA
297+
298+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
299+
with:
300+
name: thrift-compiler
301+
path: compiler/cpp
302+
303+
- name: Generate Perl thrift files
304+
run: |
305+
chmod a+x compiler/cpp/thrift
306+
compiler/cpp/thrift -version
307+
make -j"$(nproc)" -C lib/perl precross
308+
make -j"$(nproc)" -C test/perl precross
309+
make -j"$(nproc)" -C tutorial/perl precross
310+
311+
- name: Run perlcritic
312+
run: |
313+
find lib/perl test/perl tutorial/perl test/audit -iname '*.p[lm]' -type f \
314+
! -path 'lib/perl/blib/*' \
315+
! -path 'lib/perl/t/*' \
316+
-print0 | xargs -0 perlcritic
317+
278318
lib-ruby:
279319
needs: compiler
280320
runs-on: ubuntu-24.04

.perlcriticrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
verbose = 1

compiler/cpp/src/thrift/generate/t_perl_generator.cc

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ void t_perl_generator::init_generator() {
244244
f_types_ << autogen_comment() << perl_includes();
245245

246246
// Print header
247-
f_consts_ << autogen_comment() << "package " << perl_namespace(program_) << "Constants;" << '\n'
247+
f_consts_ << autogen_comment() << "package " << perl_namespace(program_)
248+
<< "Constants; ## no critic (RequireFilenameMatchesPackage)" << '\n'
248249
<< perl_includes() << '\n';
249250
}
250251

@@ -292,7 +293,8 @@ void t_perl_generator::generate_typedef(t_typedef* ttypedef) {
292293
* @param tenum The enumeration
293294
*/
294295
void t_perl_generator::generate_enum(t_enum* tenum) {
295-
f_types_ << "package " << perl_namespace(program_) << tenum->get_name() << ";" << '\n';
296+
f_types_ << "package " << perl_namespace(program_) << tenum->get_name()
297+
<< "; ## no critic (RequireFilenameMatchesPackage)" << '\n';
296298

297299
vector<t_enum_value*> constants = tenum->get_constants();
298300
vector<t_enum_value*>::iterator c_iter;
@@ -458,7 +460,8 @@ void t_perl_generator::generate_perl_struct_definition(ostream& out,
458460
const vector<t_field*>& members = tstruct->get_members();
459461
vector<t_field*>::const_iterator m_iter;
460462

461-
out << "package " << perl_namespace(tstruct->get_program()) << tstruct->get_name() << ";\n";
463+
out << "package " << perl_namespace(tstruct->get_program()) << tstruct->get_name()
464+
<< "; ## no critic (RequireFilenameMatchesPackage)\n";
462465
if (is_exception) {
463466
out << "use base qw(Thrift::TException);\n";
464467
}
@@ -719,7 +722,8 @@ void t_perl_generator::generate_service_processor(t_service* tservice) {
719722
indent_up();
720723

721724
// Generate the header portion
722-
f_service_ << "package " << perl_namespace(program_) << service_name_ << "Processor;" << '\n'
725+
f_service_ << "package " << perl_namespace(program_) << service_name_
726+
<< "Processor; ## no critic (RequireFilenameMatchesPackage)" << '\n'
723727
<< '\n' << "use strict;" << '\n' << extends_processor << '\n' << '\n';
724728

725729
if (extends.empty()) {
@@ -943,7 +947,8 @@ void t_perl_generator::generate_service_interface(t_service* tservice) {
943947
+ "If);";
944948
}
945949

946-
f_service_ << "package " << perl_namespace(program_) << service_name_ << "If;" << '\n' << '\n'
950+
f_service_ << "package " << perl_namespace(program_) << service_name_
951+
<< "If; ## no critic (RequireFilenameMatchesPackage)" << '\n' << '\n'
947952
<< "use strict;" << '\n' << extends_if << '\n' << '\n';
948953

949954
indent_up();
@@ -968,7 +973,8 @@ void t_perl_generator::generate_service_rest(t_service* tservice) {
968973
extends_if = "use base qw(" + perl_namespace(extends_s->get_program()) + extends_s->get_name()
969974
+ "Rest);";
970975
}
971-
f_service_ << "package " << perl_namespace(program_) << service_name_ << "Rest;" << '\n' << '\n'
976+
f_service_ << "package " << perl_namespace(program_) << service_name_
977+
<< "Rest; ## no critic (RequireFilenameMatchesPackage)" << '\n' << '\n'
972978
<< "use strict;" << '\n' << extends_if << '\n' << '\n';
973979

974980
if (extends.empty()) {
@@ -1030,7 +1036,8 @@ void t_perl_generator::generate_service_client(t_service* tservice) {
10301036
extends_client = "use base qw(" + extends + "Client);";
10311037
}
10321038

1033-
f_service_ << "package " << perl_namespace(program_) << service_name_ << "Client;" << '\n' << '\n'
1039+
f_service_ << "package " << perl_namespace(program_) << service_name_
1040+
<< "Client; ## no critic (RequireFilenameMatchesPackage)" << '\n' << '\n'
10341041
<< extends_client << '\n' << "use base qw(" << perl_namespace(program_)
10351042
<< service_name_ << "If);" << '\n';
10361043

lib/perl/Makefile.am

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,15 @@ PERL_GEN = \
9696
$(BENCHMARK_GEN) \
9797
$(AGGR_GEN)
9898

99+
PERL_PRECROSS_GEN = \
100+
gen-perl/ThriftTest/Constants.pm \
101+
gen-perl/BenchmarkService.pm \
102+
gen-perl2/Aggr.pm
103+
99104
BUILT_SOURCES = $(PERL_GEN)
100105

106+
precross: $(PERL_PRECROSS_GEN)
107+
101108
check-local: $(PERL_GEN)
102109
$(PERL) -Iblib/lib -I@abs_srcdir@ -I@builddir@/gen-perl2 -I@builddir@/gen-perl \
103110
@abs_srcdir@/test.pl @abs_srcdir@/t/*.t

lib/perl/lib/Thrift/Exception.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use warnings;
2424
use Thrift;
2525
use Thrift::Type;
2626

27-
package Thrift::TException;
27+
package Thrift::TException; ## no critic (RequireFilenameMatchesPackage)
2828
use version 0.77; our $VERSION = version->declare("$Thrift::VERSION");
2929

3030
use overload '""' => sub {

lib/perl/lib/Thrift/MessageType.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use Thrift;
2626
#
2727
# Message types for RPC
2828
#
29-
package Thrift::TMessageType;
29+
package Thrift::TMessageType; ## no critic (RequireFilenameMatchesPackage)
3030
use version 0.77; our $VERSION = version->declare("$Thrift::VERSION");
3131

3232
use constant CALL => 1;

lib/perl/lib/Thrift/MultiplexedProcessor.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use Thrift::MultiplexedProtocol;
2727
use Thrift::Protocol;
2828
use Thrift::ProtocolDecorator;
2929

30-
package Thrift::StoredMessageProtocol;
30+
package Thrift::StoredMessageProtocol; ## no critic (RequireFilenameMatchesPackage)
3131
use base qw(Thrift::ProtocolDecorator);
3232
use version 0.77; our $VERSION = version->declare("$Thrift::VERSION");
3333

lib/perl/lib/Thrift/Protocol.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use Thrift::Type;
2828
#
2929
# Protocol exceptions
3030
#
31-
package Thrift::TProtocolException;
31+
package Thrift::TProtocolException; ## no critic (RequireFilenameMatchesPackage)
3232
use base('Thrift::TException');
3333
use version 0.77; our $VERSION = version->declare("$Thrift::VERSION");
3434

lib/perl/lib/Thrift/ServerSocket.pm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ sub accept
8989
return $result;
9090
}
9191

92-
return undef;
9392
}
9493

9594
sub close

lib/perl/lib/Thrift/Transport.pm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use Thrift::Exception;
2727
#
2828
# Transport exceptions
2929
#
30-
package Thrift::TTransportException;
30+
package Thrift::TTransportException; ## no critic (RequireFilenameMatchesPackage)
3131
use base('Thrift::TException');
3232
use version 0.77; our $VERSION = version->declare("$Thrift::VERSION");
3333

@@ -177,4 +177,3 @@ sub close
177177

178178

179179
1;
180-

0 commit comments

Comments
 (0)