Graudit рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдбрдмреЗрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд╛рдЪрдгреА рдереЗрдЯ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.
рд╕реНрддреНрд░реЛрдд:
рдЪрд╛рдЪрдгреА рд╣рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рд▓рд╛рдЗрдл рд╕рд╛рдпрдХрд▓рдЪрд╛ рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ. рдЪрд╛рдЪрдгреАрдЪреЗ рдЕрдиреЗрдХ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд, рддреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ. рдЖрдЬ рдорд▓рд╛ рдХреЛрдбрдордзреНрдпреЗ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рд╢реЛрдзрдгреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд╛рдпрдЪреЗ рдЖрд╣реЗ.
рдЕрд░реНрдерд╛рдд, рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдЪреНрдпрд╛ рдЖрдзреБрдирд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддреЗрдордзреНрдпреЗ, рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдПрдХреЗрдХрд╛рд│реА, DevSecOps рд╣реА рд╡рд┐рд╢реЗрд╖ рд╕рдВрдЬреНрдЮрд╛ рджреЗрдЦреАрд▓ рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА рд╣реЛрддреА. рд╣рд╛ рд╢рдмреНрдж рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рддреАрд▓ рдЕрд╕реБрд░рдХреНрд╖рд╛ рдУрд│рдЦрдгреЗ рдЖрдгрд┐ рджреВрд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЛ. рдорд╛рдирдХрд╛рдВрдиреБрд╕рд╛рд░ рднреЗрджреНрдпрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдЙрдкрд╛рдп рдЖрд╣реЗрдд
рд╕реНрдЯреЕрдЯрд┐рдХ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ (SAST), рдбрд╛рдпрдиреЕрдорд┐рдХ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ (DAST), рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ (IAST), рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХрдВрдкреЛрдЭрд┐рд╢рди рдЕреЕрдирд╛рд▓рд┐рд╕рд┐рд╕ рдЖрдгрд┐ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреА рдЖрд╣реЗрдд.
рд╕реНрдЯреЕрдЯрд┐рдХ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЖрдзреАрдЪ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреАрд▓ рддреНрд░реБрдЯреА рдУрд│рдЦрддреЗ. рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдореНрд╣рдгреВрдирдЪ рддреНрдпрд╛рд▓рд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореНрд╣рдгрддрд╛рдд.
рдореА рд╕реНрдЯреЕрдЯрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрди рдЖрдгрд┐ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзреЗ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрдд рд╕рд╛рдзрди рд╡рд╛рдкрд░реЗрди.
рд╕реНрдЯреЕрдЯрд┐рдХ рдХреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рдореА рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рдХрд╛ рдирд┐рд╡рдбрд▓реЗ
рдпрд╛рдЪреА рдЕрдиреЗрдХ рдХрд╛рд░рдгреЗ рдЖрд╣реЗрдд: рдкреНрд░рдердо, рд╣реЗ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЖрд╣реЗ рдХрд╛рд░рдг рддреБрдореНрд╣реА рд╕рдорд╡рд┐рдЪрд╛рд░реА рд▓реЛрдХрд╛рдВрдЪреНрдпрд╛ рд╕рдореБрджрд╛рдпрд╛рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ рд╕рд╛рдзрди рд╡рд╛рдкрд░рдд рдЖрд╣рд╛рдд рдЬреЗ рдЗрддрд░ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдорджрдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рддрд╛рдд. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рд▓рд╣рд╛рди рдЯреАрдо рдХрд┐рдВрд╡рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдордЪреНрдпрд╛ рдХреЛрдбрдмреЗрд╕рдЪреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡рд╛рдкрд░реВрди рддреБрдореНрд╣рд╛рд▓рд╛ рдкреИрд╕реЗ рд╡рд╛рдЪрд╡рдгреНрдпрд╛рдЪреА рдЙрддреНрддрдо рд╕рдВрдзреА рдЖрд╣реЗ. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рддреБрдордЪреА рдПрдХ рд╡реЗрдЧрд│реА DevSecOps рдЯреАрдо рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрдгреНрдпрд╛рдЪреА рддреБрдордЪреА рдЧрд░рдЬ рдирд╛рд╣реАрд╢реА рд╣реЛрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреБрдордЪрд╛ рдЦрд░реНрдЪ рдЖрдгрдЦреА рдХрдореА рд╣реЛрддреЛ.
рдЪрд╛рдВрдЧрд▓реА рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╕рд╛рдзрдиреЗ рдиреЗрд╣рдореА рд▓рд╡рдЪрд┐рдХрддреЗрд╕рд╛рдареА рд╡рд╛рдврд▓реЗрд▓реНрдпрд╛ рдЧрд░рдЬрд╛ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд. рдореНрд╣рдгреВрди, рддреЗ рдЬрд╡рд│рдЬрд╡рд│ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рд╡рд┐рд╕реНрддреГрдд рдХрд╛рд░реНрдпреЗ рд╡реНрдпрд╛рдкреВрди. рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╡рд░ рдХрд╛рдо рдХрд░рдд рдЕрд╕рддрд╛рдирд╛ рддреНрдпрд╛рдВрдиреА рдЖрдзреАрдЪ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯрдорд╢реА рдЕрд╢реА рд╕рд╛рдзрдиреЗ рдЬреЛрдбрдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ.
рдкрд░рдВрддреБ рдЕрд╕реЗ рдХрд╛рд╣реА рд╡реЗрд│рд╛ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдЦрд╛рджреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╣рд╡реЗ рдЕрд╕рддреЗ рдЬреЗ рддреБрдореНрд╣реА рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдЯреВрд▓рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдирд╕рддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪрд╛ рдХреЛрдб рдлреЛрд░реНрдХ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрд╕рд╣ рддреНрдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╕рд╛рдзрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдЖрд╣реЗ.
рдмрд╣реБрддреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдЪрд╛ рд╕рдореБрджрд╛рдпрд╛рд╡рд░ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдкреНрд░рднрд╛рд╡ рдкрдбрдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдЕрдЧрджреА рддреНрд╡рд░реАрдд рдЖрдгрд┐ рдмрд┐рдВрджреВрдкрд░реНрдпрдВрдд рдШреЗрддрд▓рд╛ рдЬрд╛рддреЛ: рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд╡рд┐рдХрд╕рдХ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рдЖрдгрд┐ рд╕реВрдЪрдирд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд, рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрд╣рд╡рд╛рд▓рд╛рдВрд╡рд░ рддреНрд░реБрдЯреА рдЖрдврд│рд▓реНрдпрд╛ рдЖрдгрд┐ рдЗрддрд░ рд╕рдорд╕реНрдпрд╛.
рдХреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА Graudit рд╡рд╛рдкрд░рдгреЗ
рддреБрдореНрд╣реА рд╕реНрдЯреЕрдЯрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛; рд╕рд░реНрд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рдХреЛрдгрддреЗрд╣реА рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд╕рд╛рдзрди рдирд╛рд╣реА. рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рд╡рд┐рдХрд╛рд╕рдХ OWASP рд╢рд┐рдлрд╛рд░рд╢реАрдВрдЪреЗ рдкрд╛рд▓рди рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рднрд╛рд╖рд╛ рдХрд╡реНрд╣рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдд.
рдпреЗрдереЗ рдЖрдкрдг рд╡рд╛рдкрд░рдгрд╛рд░ рдЖрд╣реЛрдд
рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рд╕рдорд╛рди рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд - рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╛рдареА рд░рдл рдСрдбрд┐рдЯрд┐рдВрдЧ рдЯреВрд▓ (RATS), Securitycompass Web Application Analysis Tool (SWAAT), рдлреНрд▓реЙрдлрд╛рдЗрдВрдбрд░ рдЖрдгрд┐ рдЕрд╕реЗрдЪ. рдкрд░рдВрддреБ Graudit рдЕрддрд┐рд╢рдп рд▓рд╡рдЪрд┐рдХ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд┐рдорд╛рди рддрд╛рдВрддреНрд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗрдд. рддрдерд╛рдкрд┐, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдорд╕реНрдпрд╛ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЬреНрдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг Graudit рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдордЧ рддреБрдореНрд╣реА рдпреЗрдереЗ рдЗрддрд░ рдкрд░реНрдпрд╛рдп рд╢реЛрдзреВ рд╢рдХрддрд╛
рдЖрдореНрд╣реА рд╣реЗ рд╕рд╛рдзрди рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд▓реНрдкрд╛рдд рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддреЛ, рдХрд┐рдВрд╡рд╛ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рддреЗ рдЙрдкрд▓рдмреНрдз рдХрд░реВрди рджреЗрдК рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдЖрдордЪреНрдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ. рдпреЗрдереЗ рджреЗрдЦреАрд▓ Graudit рдЪреА рд▓рд╡рдЪрд┐рдХрддрд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ. рддрд░ рдкреНрд░рдердо рд░реЗрдкреЛ рдХреНрд▓реЛрди рдХрд░реВрдпрд╛:
$ git clone https://github.com/wireghoul/graudit
рдЖрддрд╛ рдХрдорд╛рдВрдб рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА Graudit рд╕рд╛рдареА рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╡реВ
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
рдЪрд▓рд╛ .bashrc (рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реА рдХреЛрдгрддреАрд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓):
#------ .bashrc ------
alias graudit="~/bin/graudit"
рд░реАрдмреВрдЯ рдХрд░рд╛:
$ source ~/.bashrc # OR
$ exex $SHELL
рд╕реНрдерд╛рдкрдирд╛ рдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реА рдХреА рдирд╛рд╣реА рддреЗ рддрдкрд╛рд╕реВрдпрд╛:
$ graudit -h
рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддрддреНрд╕рдо рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕рд▓реЗ рддрд░ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ.
рдореА рдорд╛рдЭреНрдпрд╛ рд╡рд┐рджреНрдпрдорд╛рди рдкреНрд░рдХрд▓реНрдкрд╛рдВрдкреИрдХреА рдПрдХрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдИрди. рдЯреВрд▓ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдорд╛рдЭрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреНрдпрд╛ рднрд╛рд╖реЗрдд рд▓рд┐рд╣рд┐рд▓рд╛ рдЖрд╣реЗ рддреНрдпрд╛ рднрд╛рд╖реЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдбреЗрдЯрд╛рдмреЗрд╕ ~/gradit/signatures рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗрдд:
$ graudit -d ~/gradit/signatures/js.db
рдореНрд╣рдгреВрди, рдореА рдорд╛рдЭреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреАрд▓ рджреЛрди js рдлрд╛рдЗрд▓реНрд╕рдЪреА рдЪрд╛рдЪрдгреА рдХреЗрд▓реА рдЖрдгрд┐ Graudit рдиреЗ рдорд╛рдЭреНрдпрд╛ рдХреЛрдбрдордзреАрд▓ рднреЗрджреНрдпрддреЗрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реА:
рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕рдЪреА рддрд╢рд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рдЪрд╛рдЪрдгреА рдХрд░реВрди рдкрд╛рд╣реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рдбреЗрдЯрд╛рдмреЗрд╕реЗрд╕рдЪреА рд╕реВрдЪреА рдкрд╛рд╣реВ рд╢рдХрддрд╛
Graudit рдЪреЗ рдлрд╛рдпрджреЗ рдЖрдгрд┐ рддреЛрдЯреЗ
Graudit рдЕрдиреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. рдореНрд╣рдгреВрди, рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реЗрдгреАрд╕рд╛рдареА рдпреЛрдЧреНрдп рдЖрд╣реЗ. рд╣реЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд┐рдирд╛рдореВрд▓реНрдп рдХрд┐рдВрд╡рд╛ рд╕рд╢реБрд▓реНрдХ рдЕреЕрдирд╛рд▓реЙрдЧрд╕рд╣ рдкреБрд░реЗрд╕реЗ рд╕реНрдкрд░реНрдзрд╛ рдХрд░реВ рд╢рдХрддреЗ. рдЖрдгрд┐ рд╣реЗ рдЦреВрдк рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХреА рдкреНрд░рдХрд▓реНрдкрд╛рдд рдЕрдЬреВрдирд╣реА рд╕реБрдзрд╛рд░рдгрд╛ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рд╕рдореБрджрд╛рдп рдХреЗрд╡рд│ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛рдЪ рдорджрдд рдХрд░рдд рдирд╛рд╣реА рддрд░ рдЗрддрд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рджреЗрдЦреАрд▓ рдорджрдд рдХрд░рддреЛ рдЬреЗ рд╕рд╛рдзрди рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реАрдд рдЖрд╣реЗрдд.
рд╣реЗ рдПрдХ рд╕реБрд▓рдн рд╕рд╛рдзрди рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрддрд╛рдкрд░реНрдпрдВрдд рддреЗ рдХреЛрдбрдЪреНрдпрд╛ рд╕рдВрд╢рдпрд╛рд╕реНрдкрдж рднрд╛рдЧрд╛рдордзреНрдпреЗ рдиреЗрдордХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рд╡рд┐рдХрд╛рд╕рдХ Graudit рд╕реБрдзрд╛рд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддрд╛рдд.
рдкрд░рдВрддреБ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдпрд╛рд╕рд╛рд░рдЦреА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдирд╛ рдХреЛрдбрдордзреАрд▓ рд╕рдВрднрд╛рд╡реНрдп рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдВрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдгреЗ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ.
рд╕реБрд░реВ рд╣реЛрдд рдЖрд╣реЗтАж
рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА рдЕрд╕реБрд░рдХреНрд╖рд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧрд╛рдВрдкреИрдХреА рдлрдХреНрдд рдПрдХ рдкрд╛рд╣рд┐рд▓рд╛ - рд╕реНрдерд┐рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд╛рдЪрдгреА. рд╕реНрдЯреЕрдЯрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣реА рдлрдХреНрдд рд╕реБрд░реБрд╡рд╛рдд рдЖрд╣реЗ. рддреБрдордЪреНрдпрд╛ рдХреЛрдбрдмреЗрд╕рдЪреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рд▓рд╛рдЗрдлрд╕рд╛рдпрдХрд▓рдордзреНрдпреЗ рдЗрддрд░ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдЬрд╛рд╣рд┐рд░рд╛рддреАрдВрдЪреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╡рд░
рд╕реНрддреНрд░реЛрдд: www.habr.com