App-Requirement-Arch
view release on metacpan or search on metacpan
scripts/ra_edit.pl view on Meta::CPAN
my $edited_requirement_text = Proc::InvokeEditor->edit($requirement_text, '.pl') ;
# save backup
write_file("$requirement_file.bak", $requirement_text) unless $no_backup ;
# remove violation message
$edited_requirement_text =~ s/\Q$violations_text// ;
# save edited requirement
write_file($requirement_file, $edited_requirement_text) ;
# check
my $violations = check_requirement_file
(
$master_template_file, $master_categories_file, $requirement_file,
$no_spellcheck, $no_check_categories
) ;
if(exists $violations->{$requirement_file})
{
print DumpTree($violations->{$requirement_file}, 'Violations remaining in requirement:', DISPLAY_ADDRESS => 0) ;
}
} ;
die $@ if $@ ;
#------------------------------------------------------------------------------------------------------------------
sub check_requirement_file
{
my
(
$master_template_file, $master_categories_file, $requirement_file,
$no_spellcheck, $no_check_categories
) = @_ ;
my ($files, $ok_parsed, $requirements_with_errors, $violations)
= App::Requirement::Arch::Requirements::get_requirements_violations
($master_template_file, $requirement_file) ;
unless($no_spellcheck)
{
my ($file_name_errors, $errors_per_file) = spellcheck($requirement_file) ;
$violations->{$requirement_file}{spellchecking_errors} = $errors_per_file->{$requirement_file} if exists $errors_per_file->{$requirement_file}
}
unless($no_check_categories)
{
my $category_structure = load_master_categories($master_categories_file) ;
my ($requirements_structure, $requirements, $categories, $ok_parsed, $errors)
= get_requirements_structure($requirement_file, $master_template_file) ;
my ($in_master_only, $in_requirements_only) = merge_master_categories($category_structure, $requirements_structure, '') ;
for ( grep {$_ ne '/NOT_CATEGORIZED' and $_ ne '/STATISTICS'} sort keys %{$in_requirements_only})
{
push @{ $violations->{$requirement_file}{not_in_master_categories}}, $_ ;
}
}
return $violations ;
}
( run in 0.556 second using v1.01-cache-2.11-cpan-39bf76dae61 )