דָּוִדdavidov777 (daviddavidov777) wrote,
דָּוִדdavidov777
daviddavidov777

биография пушкина

Следующим шагом устанавливаем профиль Perl::Critic'а (perlcritic-brutal.conf), на который мы сослались в предыдущем файле:

mkdir $SVN_REPO/hooks/perlcritic.d
cat > $SVN_REPO/hooks/perlcritic.d/perlcritic-brutal.conf<<'EOF'
#
# Perl::Critic profile example
#

# Make perlcritic very exacting
severity = brutal

# You can choose any level from 1 to 11, but 8 is recommended
verbose = 8

# Colorize violations depending on their severity level
color = 1

# Halt if this file contains errors
profile-strictness = fatal

# Enable only two groups of policies: Core and Perl Best Practices
theme = core || pbp

# Explicitly set full path to Perl::Tidy's config
[CodeLayout::RequireTidyCode]
perltidyrc = /etc/perltidyrc
EOF

В этом профиле включается самый строгий режим работы критика (severity = brutal), в котором он будет придираться даже к мелочам (однако мы то знаем, что в авиации мелочей не бывает). Директива theme указывает, что из всего множества доступных Policy, а их около полутора сотен, проверять необходимо только те, которые числятся в группах Core или Perl Best Practices. Также мы явно указываем путь к настройкам программы perltidy — утилиты для автоматического форматирования Perl-кода. Нарушение форматирования — это одна из причин, по которым коммит может не пройти.

Отмечу, что этот профиль содержит только базовые настройки, однако это хорошая отправная точка. Более подробно о возможностях Perl::Critic'а можно почитать в документации: perldoc Perl::Critic.

Далее создаём конфиг для perltidy (с привилегиями root-а):

sudo su -
cat > /etc/perltidyrc<<'EOF'
--perl-best-practices
EOF
exit

Этот файл крайне прост: он инструктирует perltidy форматировать код согласно рекомендациям из уже упомянутой книги Perl Best Practices. Если вы привыкли к другому стилю, то выбрать нужные опции форматирования поможет страница руководства perltidy(1p).

Имя и путь файла выбраны не случайно. По умолчанию, perltidy сперва проверяет пользовательский конфиг $HOME/.perltidyrc, а затем уже глобальный — /etc/perltidyrc. Таким образом, поместив конфиг в /etc мы сделаем его одновременно доступным как для perlcritic-checker'а (работающего обычно под пользователем svn) так и для самой программы perltidy, какой бы пользователь её не запустил.

Наконец, нам осталось проинструктировать Subversion вызывать скрипт perlcritic-checker.pl для проверки коммитов. Как нетрудно догадаться, для этого нужно отредактировать pre-commit hook:

cat > $SVN_REPO/hooks/pre-commit<<'EOF'
#!/bin/sh

#
# SVN pre-commit hook script example
#

REPOS="$1"
TXN="$2"
PREFIX="/usr/local"

# Make sure that Perl code comply to coding standards
$PREFIX/bin/perlcritic-checker.pl \
--repository "$REPOS" \
--config "$REPOS/hooks/perlcritic-checker.conf" \
--transaction "$TXN" || exit 1

# All checks have passed, so allow the commit
exit 0
EOF
chmod 755 $SVN_REPO/hooks/pre-commit

На этом этап настройки завершён. Всё готово для первого эксперимента.

Хороший, плохой, прогрессивный

Итак, создадим в репозитории папку для тестового проекта и сделаем checkout рабочей копии:

export WORK_COPY="/tmp/test_project"
svn mkdir file://$SVN_REPO/test_project -m ""
svn checkout file://$SVN_REPO/test_project $WORK_COPY

Для эксперимента нам понадобится «хороший» файл (файл без нарушений):

cat > $WORK_COPY/good_file.pl<<'EOF'
#!/usr/bin/perl

#===============================================================================
# REVISION: $Id$
# DESCRIPTION: File without violations
#===============================================================================

use strict;
use warnings;

our $VERSION = '1.0';

sub main {
return;
}

main();
EOF
chmod 755 $WORK_COPY/good_file.pl

и «плохой» файл (файл с нарушениями):

cat > $WORK_COPY/bad_file.pl<<'EOF'
#!/usr/bin/perl

#===============================================================================
# REVISION: $Id$
# DESCRIPTION: File with violations
#===============================================================================

use strict;

#use warnings;

our $VERSION = "1" . "." . "0";

sub main() {
return undef;
}

main();
EOF
chmod 755 $WORK_COPY/bad_file.pl

Коммит хорошего файла должен пройти без проблем:

cd $WORK_COPY
svn add good_file.pl
svn commit -m "This commit should be OK" good_file.pl

А вот коммит плохого файла должен вызвать недовольство критика:

cd $WORK_COPY
svn add bad_file.pl
svn commit -m "This commit should fail" bad_file.pl


Adding bad_file.pl
Transmitting file data .svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
test_project/bad_file.pl: [Subroutines::ProhibitExplicitReturnUndef] "return" statement with explicit "undef" at line 15, column 5. (Severity: 5)
test_project/bad_file.pl: [Subroutines::ProhibitSubroutinePrototypes] Subroutine prototypes used at line 14, column 1. (Severity: 5)
test_project/bad_file.pl: [TestingAndDebugging::RequireUseWarnings] Code before warnings are enabled at line 12, column 1. (Severity: 4)
test_project/bad_file.pl: [ValuesAndExpressions::ProhibitNoisyQuotes] Quotes used with a noisy string at line 12, column 22. (Severity: 2)
test_project/bad_file.pl: [ValuesAndExpressions::ProhibitInterpolationOfLiterals] Useless interpolation of literal string at line 12, column 16. (Severity: 1)
test_project/bad_file.pl: [ValuesAndExpressions::ProhibitInterpolationOfLiterals] Useless interpolation of literal string at line 12, column 22. (Severity: 1)
test_project/bad_file.pl: [ValuesAndExpressions::ProhibitInterpolationOfLiterals] Useless interpolation of literal string at line 12, column 28. (Severity: 1)
---
You can bypass all checks by placing 'NO CRITIC' in the begining of the comment message,
e.g.: svn ci -m "NO CRITIC: emergency hotfix" FooBar.pm


Это интересная составляющая представлена на сайте а именно биография пушкина очень интересно!Заходите читайте и узнавайте там много всего интересного представленно!
Tags: биография пушкина
Subscribe

  • Скачать фильм Аватар

    Мне очень часто приходится проводить собеседования, нанимая на работу PHP-программистов. 2-3 человека в день — это вполне нормально, хотя и на грани…

  • New age.................

    Заниматься еще больше торговлей!Понять куда пойдет тренд. Учиться , как можно больше задавать как можно больше вопросов.не терять время на всякую…

  • music

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments