@@ -38,14 +38,18 @@ sub new {
3838
3939 (exists ($args {level }) and exists ($args {paths })) or die " $! " ;
4040
41+ # prevent empty arrays
42+ my $ignored = ((exists ($args {ignoredDirectories }) and scalar (@{$args {ignoredDirectories }}) != 0) ? $args {ignoredDirectories } : undef );
43+ my $plugins = ((exists ($args {plugins }) and scalar (@{$args {plugins }}) != 0) ? $args {plugins } : undef );
44+
4145 my $self = {
4246 level => $args {level },
4347 paths => $args {paths },
44- ignoredDirectories => $args { ignoredDirectories } || undef ,
48+ ignoredDirectories => $ignored ,
4549 baseline => $args {baseline } || undef ,
4650 baselineCheck => $args {baselineCheck } || ' true' ,
4751 cacheDir => $args {cacheDir } || ' ./psalm' ,
48- plugins => $args { plugins } || undef ,
52+ plugins => $plugins ,
4953 generator => GPH::XMLHelper-> new(),
5054 };
5155
@@ -60,6 +64,7 @@ sub new {
6064# Returns: psalm.xml config file string
6165sub getConfig {
6266 my $self = shift ;
67+ my $type ;
6368
6469 my $psalm = $self -> {generator }-> buildElement((name => ' psalm' , attributes => {
6570 ' resolveFromConfigFile' => ' true' ,
@@ -76,7 +81,9 @@ sub getConfig {
7681 my $projectFiles = $self -> {generator }-> buildElement((name => ' projectFiles' , parent => $psalm ));
7782
7883 foreach my $path (@{$self -> {paths }}) {
79- $self -> {generator }-> buildElement((name => ' directory' , parent => $projectFiles , attributes => {
84+ $type = ($path =~ / .*\. [a-z]+$ / ) ? ' file' : ' directory' ;
85+
86+ $self -> {generator }-> buildElement((name => $type , parent => $projectFiles , attributes => {
8087 ' name' => $path ,
8188 }));
8289 }
@@ -85,7 +92,9 @@ sub getConfig {
8592 my $ignoreFiles = $self -> {generator }-> buildElement((name => ' ignoreFiles' , parent => $projectFiles ));
8693
8794 foreach my $path (@{$self -> {ignoredDirectories }}) {
88- $self -> {generator }-> buildElement((name => ' directory' , parent => $ignoreFiles , attributes => {
95+ $type = ($path =~ / .*\. [a-z]+$ / ) ? ' file' : ' directory' ;
96+
97+ $self -> {generator }-> buildElement((name => $type , parent => $ignoreFiles , attributes => {
8998 ' name' => $path ,
9099 }));
91100 }
@@ -102,6 +111,7 @@ sub getConfig {
102111 }
103112
104113 my $dom = $self -> {generator }-> getDom();
114+
105115 $dom -> setDocumentElement($psalm );
106116
107117 return ($dom -> toString(1));
@@ -121,6 +131,8 @@ sub getConfigWithIssueHandlers {
121131 my ($handlers ) = $dom -> findnodes(' //*[local-name()="issueHandlers"]' );
122132
123133 foreach my $exclude ($blacklist ) {
134+ next if not defined $exclude ;
135+
124136 my ($remove ) = $handlers -> findnodes(" //*[local-name()=\" ${exclude} \" ]" );
125137
126138 if (defined $remove ) {
0 commit comments