2013-01-16 27 views
6

Używam narzędzia analizy kodu statycznego OCLint dla celu C i chcę dowiedzieć się, jak dostosować reguły? Reguły są reprezentowane przez zestaw plików dylib.Dostosowywanie reguły OCLint

Odpowiedz

4

Odpowiedź, jak na tak wiele rzeczy, polega na tym, że to zależy.

  1. Jeśli chcesz napisać swój własny przepis następnie trzeba zejść i brudne do pisania własnych rządów, w C++ na górze istniejącego kodu źródłowego. Sprawdź katalog oclint-rules/rules, size/LongLineRule.cpp to prosta reguła, z którą można się połączyć. Będziesz musiał przekompilować, itp.

  2. Jeśli chcesz zmienić parametry istniejącej reguły, musisz dodać parametr wiersza poleceń -rc=<rulename>=<value> do połączenia z oclint. Na przykład, jeśli chcesz, aby reguła linii długich aktywowała się tylko dla linii dłuższych niż 150 znaków, musisz dodać -rc=LONG_LINE=150.

Nie mam cierpliwości, aby wymienić wszystkie parametry, które można zmienić. Lista reguł znajduje się tutaj http://docs.oclint.org/en/dev/rules/index.html i lista reguł opartych na progach tutaj http://docs.oclint.org/en/dev/customizing/rules.html, ale nie ma listy dopuszczalnych wartości i nie wiem, czy te dwa adresy URL obejmują wszystkie reguły, czy nie. Możesz zajrzeć do kodu źródłowego każdej reguły, aby dowiedzieć się, jak to działa.

4

Jeśli używasz skryptu Xcode należy użyć oclint_args takiego:

oclint_args oclint-json-kompilacja-baza "-Rc LONG_LINE = 150" | SED 'y/(., \ m {1,2} [0-9] [0-9] *:)/\ 1 uwaga: /'

w tej próbce I” m zmieniając regułę LONG_LINE na 150 znaków

4

Zamiast przekazywania konfiguracji jako argumentów (patrz odpowiedź Jona Boydella), można również utworzyć plik YML o nazwie .oclint w katalogu projektu.

Oto przykładowy plik, który dostosowuje się kilka rzeczy:

rules: 
    - LongLine 
disable-rules: 
rulePaths: 
    - /etc/rules 
rule-configurations: 
- key: LONG_LINE 
    value: 20 
output: filename 
report-type: xml 
max-priority-1: 10 
max-priority-2: 20 
max-priority-3: 30 
enable-clang-static-analyzer: false