M>>всё это — продукты, которые широко используются в огромной куче проектов. посмотри идеи, заложенные в них
S>Спасибо, посмотрю. Я сейчас самостоятельно ищу аналоги (хотя вышеуказанные продукты аналогами не являются, они скорее дополняют друг друга при билде), использование таких тулз хорошо бы унифицировать хотя бы внешне.
почему не аналоги? checkstyle и jalopy встраиваются в среды разработки и подсвечивают, например, ляпы или вызываются из среды для форматирования текстов, пример — Eclipse plugins (я синеньким закрасил кое-что, это несущественно):
Re[4]: Проверка исходных текстов перед компиляцией
Здравствуйте, mihhon, Вы писали:
M>почему не аналоги? checkstyle и jalopy встраиваются в среды разработки и подсвечивают, например, ляпы или вызываются из среды для форматирования текстов, пример — Eclipse plugins (я синеньким закрасил кое-что, это несущественно):
В смысле встраиваемости в среды разработки да, аналоги, нужно поддерживать это. В остальном — утилиты совершенно разные.
Re[5]: Проверка исходных текстов перед компиляцией
Здравствуйте, mihhon, Вы писали:
M>посмотри вот это http://www.castsoftware.com/Products/platform/AMS/Enforce/Features.html , продукт для параноиков, анализатор кода, генератор отчётов, поддерживает в дом числе и Дельфи
M>на реальном проекте был плохо настроен, поэтому особой пользы от него не было. а так мощная штука, если хорошо настроить
Да, это возможно самый близкий аналог, но такого уровня накрученности мне не достичь, по крайней мере сразу. Да и незачем, кому нужен второй такой же CAST?
Re[7]: Проверка исходных текстов перед компиляцией
S>Да, это возможно самый близкий аналог, но такого уровня накрученности мне не достичь, по крайней мере сразу. Да и незачем, кому нужен второй такой же CAST?
ценовая категория. CAST стоит десятки тысяч долларов, как договоришься
Re[8]: Проверка исходных текстов перед компиляцией
Здравствуйте, mihhon, Вы писали:
S>>Да, это возможно самый близкий аналог, но такого уровня накрученности мне не достичь, по крайней мере сразу. Да и незачем, кому нужен второй такой же CAST?
M>ценовая категория. CAST стоит десятки тысяч долларов, как договоришься
Да, цена там действительно только для ОЧЕНЬ крупных команд. Ниша есть и для меня, выходит. Уже копаю...
Re[5]: Проверка исходных текстов перед компиляцией
кстати, checkstyle поддерживает достаточно хитрые проверки, он расширяем, но твои правила реализованы на regexp, а в checkstyle на java (можно вызвать regexp из java ). у тебя проще добавить настройки, но на ява можно написать более сложные правила. вот примеры правил:
Detects inline conditionals. Rationale: Some developers find inline conditionals hard to read, so their company's coding standards forbids them.
The "double-checked locking" idiom (DCL) tries to avoid the runtime cost of synchronization. The problem with the DCL idiom in Java is that it just does not work correctly. Using it introduces bugs that are extremely hard to track down and reproduce.
Checks that classes that override equals() also override hashCode().
Checks that a local variable or a parameter does not shadow a field that is defined in the same class.
Checks for illegal instantiations where a factory method is preferred. Rationale: Depending on the project, for some classes it might be preferable to create instances through factory methods rather than calling the constructor. A simple example is the java.lang.Boolean class. In order to save memory and CPU cycles, it is preferable to use the predefined constants TRUE and FALSE. Constructor invocations should be replaced by calls to Boolean.valueOf(). Some extremely performance sensitive projects may require the use of factory methods for other classes as well, to enforce the usage of number caches or object pools.
Checks for assignments in subexpressions, such as in "String s = Integer.toString(i = 2);". Rationale: With the exception of for iterators, all assignments should occur in their own toplevel statement to increase readability. With inner assignments like the above it is difficult to see all places where a variable is set.
Checks that there are no "magic numbers", where a magic number is a numeric literal that is not defined as a constant.
Checks that switch statement has "default" clause. Rationale: It's usually a good idea to introduce a default case in every switch statement. Even if the developer is sure that all currently possible cases are covered, this should be expressed in the default branch, e.g. by using an assertion. This way the code is protected aginst later changes, e.g. introduction of new types in an enumeration type.
Checks for redundant exceptions declared in throws clause such as duplicates, unchecked exceptions or subclasses of another declared exception.
Checks for overly complicated boolean expressions. Currently finds code like if (b == true), b || true, !false, etc.
Checks for overly complicated boolean return statements.
Re[6]: Проверка исходных текстов перед компиляцией
Здравствуйте, mihhon, Вы писали:
M>кстати, checkstyle поддерживает достаточно хитрые проверки, он расширяем, но твои правила реализованы на regexp, а в checkstyle на java (можно вызвать regexp из java ). у тебя проще добавить настройки, но на ява можно написать более сложные правила. вот примеры правил:
......
Да, понятно. Осталось только найти красивый способ скармливания фрагментов по необходимости некому парсеру в моей программе. Стоит подумать.
Re[3]: Проверка исходных текстов перед компиляцией
Ja kak-to skachal testversiju "CodeWizard" firmy parasoft.
Polnoe der'mo!
0)Programma snachala ne poshla, t.k. predpologalas' fajlovaja struktura opredelennogo distributiva Linuxa. Vidno firma parasoft ne znala chto Linux eto ne vsegda "RH 7.1"
1)Programma napisana srazu na 4-h jasykah: bash, python, c++, Java
2)Pri proverke 30.000 Strochnoj programmy sozhrala 2GByta ram, i komputer zavis.
3)Vydala trivial'nye ochibli, ne vyhodjaschie za kontext odnoj stroki.
4)Priznala Kod Qt-Biblioteki absoljutno negodnym!
Punkt Nr.3 — Slabost' bolschinstva podobnyh programm. Nelzja po odnoj strochke vyjavit' oshibku.
Napr.(c++) Soderzhit klass chleny ukazateli, bud' dobr opredeli operator= i copy-konstructor,
esli chlenov ukazatelei net, mozhno obojtis' standartnymi operatorami.
Esli porazbrosit' mozgami, kak rabotajut podobnye programmy?
Ischut regexp, vydajut soobschenie i sovet.
Vsja cennost' programmy zakljuchaetsja v nbore "regexpov" i sootvetstvujuschih
pojasnenii s sovetami.
Samu programmu mozhno realizovat' v vide 10 strochnogo skripta s pomoschju prikaza "grep".
Paradox firmy parasoft zakluchalsja v tom, chto svoju nikchemnuju programmu oni zaschishajut
vsjakimi kljuchami, a baza dannyj ochibok i sovetov lezhiz otkrytaja v text-failah
Soznanije uchastnikov kollektiva, i kollektivnye pravila napisanija koda + predpisanie
pereodicheskogo codereview pomoemu namnogo poleznei chem podobnye tooly.
A esli prosmotr koda bjet po samoljubiju programistov, ili nachalniku "v lom" kod pochitat',
to takoj komande ne pomoch'.
s uvazheniem,
Valentin
Здравствуйте, softilium, Вы писали:
S>Здравствуйте, Слава Шевцов, Вы писали:
СШ>>А какие ещё существуют аналогичные инструменты?
S>При обсуждении темы в SWRUS-PROGRAMMING всплыла информация об утилите FxCop, она проверяет .NET assemblies на соответствие гайдлайнам. Насколько я понял, это где-то близко, но не аналог.
S>Поиском по google можно найти с десяток подобных утилит, но они как правило достаточно дороги и занимаются именно синтаксическим анализом, с помощью которого находятся потенциальные дыры. Здесь совсем другой принцип, все гораздо проще.
Re[4]: Проверка исходных текстов перед компиляцией