pmccabe - ക്ലൗഡിൽ ഓൺലൈനിൽ

ഉബുണ്ടു ഓൺലൈൻ, ഫെഡോറ ഓൺലൈൻ, വിൻഡോസ് ഓൺലൈൻ എമുലേറ്റർ അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് പ്രൊവൈഡറിൽ പ്രവർത്തിപ്പിക്കാവുന്ന കമാൻഡ് pmccabe ആണിത്.

പട്ടിക:

NAME


pmccabe - McCabe സൈക്ലോമാറ്റിക് കോംപ്ലക്‌സിറ്റി അല്ലെങ്കിൽ C കൂടാതെ കമന്റ് ചെയ്യാത്ത വരികളുടെ എണ്ണം കണക്കാക്കുക
സി++ പ്രോഗ്രാമുകൾ

സിനോപ്സിസ്


pmccabe [-bCdfFntTvV?] [ഫയലുകൾ)]

വിവരണം


pmccabe പേരിട്ടിരിക്കുന്ന ഫയലുകൾ പ്രോസസ്സ് ചെയ്യുന്നു, അല്ലെങ്കിൽ പേര് നൽകിയിട്ടില്ലെങ്കിൽ സ്റ്റാൻഡേർഡ് ഇൻപുട്ട്. സ്ഥിരസ്ഥിതി മോഡിൽ
ഓരോ ഫംഗ്‌ഷനുമുള്ള മക്‌കേബ് സൈക്ലോമാറ്റിക് കോംപ്ലക്‌സിറ്റി ഉൾപ്പെടെയുള്ള സ്ഥിതിവിവരക്കണക്കുകൾ ഇത് കണക്കാക്കുന്നു. ദി
ഫയലുകൾ C (ANSI അല്ലെങ്കിൽ K&R) അല്ലെങ്കിൽ C++ ആയിരിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു.

-? ഒരു വിജ്ഞാനപ്രദമായ ഉപയോഗ സന്ദേശം അച്ചടിക്കുക.

-v കോളം തലക്കെട്ടുകൾ അച്ചടിക്കുക

-V അച്ചടിക്കുക pmccabe പതിപ്പ് നമ്പർ

ഡി-കമൻറ് ചെയ്യുന്നു മോഡ്
-d കമന്റിടാത്ത ഉറവിട ലൈനുകൾ ഇനിപ്പറയുന്നതുവഴി എണ്ണാൻ സഹായിക്കുന്നതിന് ഉദ്ദേശിച്ചുള്ളതാണ്:

pmccabe -d *.c | grep -v '^[ ]*$' | wc -l

കമന്റുകൾ നീക്കം ചെയ്തു, സിപിപി നിർദ്ദേശങ്ങൾ മാറ്റിസ്ഥാപിക്കുന്നു സിപിപി, സ്ട്രിംഗ് ലിറ്ററലുകൾ ആകുന്നു
മാറ്റിസ്ഥാപിച്ചു STRINGലിറ്ററൽ, പ്രതീക സ്ഥിരാങ്കങ്ങൾ മാറ്റിസ്ഥാപിക്കുന്നു ചാർലിറ്ററൽ. ദി
തത്ഫലമായുണ്ടാകുന്ന സോഴ്സ് കോഡ് പാഴ്സ് ചെയ്യാൻ വളരെ എളുപ്പമാണ്. നടത്തിയ ആദ്യ നടപടിയാണിത്
pmccabe അങ്ങനെ അതിന്റെ പാഴ്സർ ലളിതമാക്കാം.

മറ്റ് ഓപ്ഷനുകളൊന്നും വിവേകത്തോടെ പ്രവർത്തിക്കില്ല -d.

ലൈൻ-കൗണ്ടിംഗ് മോഡ്
-n കമന്റിടാത്ത ഉറവിട വരികൾ എണ്ണുന്നു. ഔട്ട്പുട്ട് ഫോർമാറ്റ് എന്നതിന് സമാനമാണ്
അനക് കോളം തലക്കെട്ടുകളും ആകെത്തുകകളും വേണമെങ്കിൽ അഭ്യർത്ഥിക്കണം എന്നതൊഴിച്ചാൽ പ്രോഗ്രാം.
നിങ്ങൾക്ക് കോളം തലക്കെട്ടുകൾ വേണമെങ്കിൽ ചേർക്കുക -v. നിങ്ങൾക്ക് ആകെ വേണമെങ്കിൽ ചേർക്കുക -t. നിങ്ങൾ ആഗ്രഹിക്കുന്നത് എല്ലാം ആണെങ്കിൽ
ആകെ കൂട്ടിച്ചേർക്കുന്നു -T.

സങ്കീർണത മോഡ് (സ്ഥിരസ്ഥിതി)
-C ഇഷ്ടാനുസൃത ഔട്ട്പുട്ട് ഫോർമാറ്റ് - അത് ഉപയോഗിക്കരുത്.

-c ഓരോ ഫംഗ്‌ഷനും (ഒപ്പം ഫയലും) റോയ്‌ക്ക് പകരം കമന്റ് ചെയ്യാത്തതും ശൂന്യമല്ലാത്തതുമായ വരികൾ റിപ്പോർട്ട് ചെയ്യുക
വരികളുടെ എണ്ണം. കുറിപ്പ് പ്രീ-പ്രോസസർ നിർദ്ദേശങ്ങൾ ആകുന്നു ചെയ്യില്ല എണ്ണി.

-b മനസിലാക്കുന്ന കംപൈലർ പിശക് ബ്രൗസിംഗ് ടൂളുകൾക്ക് അനുയോജ്യമായ ഔട്ട്പുട്ട് ഫോർമാറ്റ്
"ക്ലാസിക്" കംപൈലർ പിശകുകൾ. ഈ ഫോർമാറ്റിലെ സംഖ്യാക്രമം ഇനിപ്പറയുന്നവ ഉപയോഗിച്ച് സാധ്യമാണ്:

അടുക്കുക -n +1 -t%

-t കോളത്തിന്റെ ആകെത്തുക പ്രിന്റ് ചെയ്യുക. മൊത്തം വരികളുടെ എണ്ണം *അല്ല* അല്ലാത്തവയുടെ എണ്ണം എന്നത് ശ്രദ്ധിക്കുക
സോഴ്സ് ലൈനുകൾ കമന്റ് ചെയ്തു - ഇത് "wc -l" റിപ്പോർട്ട് ചെയ്യുന്നത് പോലെയാണ്.

-T പ്രിന്റ് കോളത്തിന്റെ ആകെത്തുക *മാത്രം*.

-f ഓരോ ഫംഗ്‌ഷൻ ആകെത്തുകയ്‌ക്കൊപ്പം ഓരോ ഫയലിന്റെയും ആകെത്തുക ഉൾപ്പെടുത്തുക.

-F ഓരോ ഫയലിന്റെയും ആകെത്തുക പ്രിന്റ് ചെയ്യുക, എന്നാൽ ഓരോ ഫംഗ്‌ഷൻ ആകെത്തുകയല്ല.

പാഴ്‌സിംഗ്
pmccabe എല്ലാം അവഗണിക്കുന്നു സിപിപി പ്രീപ്രോസസർ നിർദ്ദേശങ്ങൾ - സങ്കീർണ്ണത കണക്കാക്കുന്നു
പ്രീപ്രൊസസ്സർ കോഡിനെ മംഗളാക്കിയതിന് ശേഷമുള്ള സങ്കീർണ്ണതയെക്കാൾ കോഡിന്റെ രൂപഭാവം.
ലളിതമായ കാര്യങ്ങൾ ആയതിനാൽ ഇത് വളരെ പ്രധാനമാണ് getchar(3) മാക്രോകളിലേക്ക് വികസിപ്പിക്കുക
സങ്കീർണ്ണത വർദ്ധിപ്പിക്കുക.

ഔട്ട്പുട്ട് ഫോർമാറ്റ്
ഫോമിന്റെ ഓരോ ഫംഗ്ഷനും സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്ക് ഒരു ലൈൻ എഴുതിയിരിക്കുന്നു:

പരിഷ്‌ക്കരിച്ച മക്‌കേബ് സൈക്ലോമാറ്റിക് കോംപ്ലക്‌സിറ്റി
| പരമ്പരാഗത മക്‌കേബ് സൈക്ലോമാറ്റിക് കോംപ്ലക്‌സിറ്റി
| | # പ്രസ്താവനകൾ പ്രവർത്തനത്തിലാണ്
| | | പ്രവർത്തനത്തിന്റെ ആദ്യ വരി
| | | | # വരികൾ പ്രവർത്തനത്തിലാണ്
| | | | | ഫയലിന്റെ പേര് (ഡെഫനിഷൻ ലൈൻ നമ്പർ): പ്രവർത്തനം
| | | | | |
5 6 11 34 27 gettoken.c(35): പൊരുത്തം

കോളം 1-ൽ സൈക്ലോമാറ്റിക് കോംപ്ലക്‌സിറ്റി അടങ്ങിയിരിക്കുന്നു, ഇത് 1 (ഫംഗ്‌ഷനുവേണ്ടി) ചേർത്തുകൊണ്ട് കണക്കാക്കുന്നു
സംഭവങ്ങൾ വേണ്ടി, if, സമയത്ത്, മാറുക, &&, ||, ഒപ്പം ?. "സാധാരണ" McCabe സൈക്ലോമാറ്റിക് പോലെയല്ല
സങ്കീർണ്ണത, ഒരു സ്വിച്ച് പ്രസ്താവനയിലെ ഓരോ കേസും അധിക സങ്കീർണ്ണതയായി കണക്കാക്കില്ല. ഈ
സ്വിച്ച് സ്റ്റേറ്റ്‌മെന്റുകളുടെയും സങ്കീർണ്ണതയുടെയും ചികിത്സ "സാധാരണ" അളവിനേക്കാൾ കൂടുതൽ ഉപയോഗപ്രദമാകും
മെയിന്റനൻസ് പ്രയത്നവും കോഡ് ബുദ്ധിമുട്ടും വിലയിരുത്തുന്നതിന്.

കോളം 2 എന്നത് സ്വിച്ചിനെ സംബന്ധിച്ച് "സാധാരണ" രീതിയിൽ കണക്കാക്കിയ സൈക്ലോമാറ്റിക് സങ്കീർണ്ണതയാണ്
പ്രസ്താവനകൾ. പ്രത്യേകമായി ഇത് കോളം 1-ൽ ഉള്ളതുപോലെ കണക്കാക്കുന്നു, പക്ഷേ ഓരോന്നും കണക്കാക്കുന്നു കേസ് പകരം
അധികം മാറുക കൂടാതെ ടെസ്റ്റിംഗ് പ്രയത്നം വിലയിരുത്തുന്നതിന് കോളം 1 നേക്കാൾ കൂടുതൽ ഉപയോഗപ്രദമാകും.

കോളം 3-ൽ ഒരു പ്രസ്താവന എണ്ണം അടങ്ങിയിരിക്കുന്നു. ഓരോ സംഭവങ്ങളും ചേർത്താണ് ഇത് കണക്കാക്കുന്നത് വേണ്ടി,
if, സമയത്ത്, മാറുക, ?, ഫംഗ്‌ഷനിലെ അർദ്ധവിരാമം. സാധ്യമായ ഒരു അത്ഭുതം അതാണ്
വേണ്ടി പ്രസ്‌താവനകൾക്ക് ഏറ്റവും കുറഞ്ഞ സ്‌റ്റേറ്റ്‌മെന്റ് കൗണ്ട് 3 ആണ്. ഇത് യാഥാർത്ഥ്യമാണ് വേണ്ടി (എ; B;
സി){...} എന്നതിന്റെ ചുരുക്കെഴുത്താണ് A; സമയത്ത് (B) { ... സി;}. ഉള്ളിലെ പ്രസ്താവനകളുടെ എണ്ണം
അതിനുള്ളിൽ നടപ്പിലാക്കിയ ഓരോ ഫംഗ്‌ഷനുമുള്ള സ്റ്റേറ്റ്‌മെന്റുകളുടെ എണ്ണത്തിന്റെ ആകെത്തുകയാണ് ഫയൽ
ഫയൽ, ഓരോ ഫംഗ്‌ഷനുകൾക്കുമായി പ്ലസ് വൺ (കാരണം ഫംഗ്‌ഷനുകളും പ്രസ്താവനകളാണ്), പ്ലസ്
പരസ്പരം ഫയൽ-സ്കോപ്പ് ചെയ്ത പ്രസ്താവനകൾ (സാധാരണയായി പ്രഖ്യാപനങ്ങൾ).

കോളം 4 ഫംഗ്‌ഷനിലെ ആദ്യ വരി നമ്പർ ഉൾക്കൊള്ളുന്നു. ഇത് തന്നെ ആയിരിക്കണമെന്നില്ല
ഫംഗ്‌ഷൻ നാമം ദൃശ്യമാകുന്ന വരി.

കോളം 5 എന്നത് ഫംഗ്‌ഷന്റെ വരികളുടെ എണ്ണമാണ്, കോളം 4-ലെ സംഖ്യ മുതൽ
ക്ലോസിംഗ് ചുരുണ്ട ബ്രേസ് അടങ്ങുന്ന ലൈൻ.

അവസാന നിരയിൽ ഫയലിന്റെ പേര്, ഫംഗ്‌ഷൻ നാമം വരുന്ന ലൈൻ നമ്പർ എന്നിവ അടങ്ങിയിരിക്കുന്നു,
പ്രവർത്തനത്തിന്റെ പേരും.

അപേക്ഷകൾ


ന്റെ വ്യക്തമായ പ്രയോഗം pmccabe ഒരു ലിസ്റ്റ് നൽകുന്ന താഴെ ചിത്രീകരിക്കുന്നു
"മികച്ച പത്ത്" ഏറ്റവും സങ്കീർണ്ണമായ പ്രവർത്തനങ്ങൾ:

pmccabe *.c | അടുക്കുക -nr | തല -10

പല ഫയലുകളിലും ഒന്നിലധികം സി ഫംഗ്‌ഷനുകൾ അടങ്ങിയിരിക്കുന്നു, ചിലപ്പോൾ ഇത് എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യുന്നത് ഉപയോഗപ്രദമാകും
ഓരോ പ്രവർത്തനവും പ്രത്യേകം. മാച്ച്പാരെൻ() (മുകളിലുള്ള ഉദാഹരണ ഔട്ട്പുട്ട് കാണുക) നിന്ന് എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യാനാകും
gettoken.c, ലൈൻ 27-ൽ തുടങ്ങുന്ന 34 വരികൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്‌ത്. ഇത് ടൂളുകളുടെ അടിസ്ഥാനമായി മാറും.
ഫയലുകൾക്ക് പകരം ഫംഗ്ഷനുകളിൽ പ്രവർത്തിക്കുന്നവ (ഉദാ, ഫ്രണ്ട് എൻഡ് ആയി ഉപയോഗിക്കുക ഡിഫ്എഫ്(1)).

ഡയഗ്നോസ്റ്റിക്സ്


pmccabe ഫയലുകൾ തുറക്കാൻ കഴിയാതെ വന്നാൽ ഒരു നോൺസീറോ എക്സിറ്റ് സ്റ്റാറ്റസ് നൽകുന്നു
ചില പാഴ്സിംഗ് പിശകുകൾ.

സാധാരണ പിശകിലേക്കുള്ള പിശക് സന്ദേശങ്ങൾ, സാധാരണയായി പാഴ്‌സർ ആശയക്കുഴപ്പത്തിലാണെന്ന് വിശദീകരിക്കുന്നു
എന്തെങ്കിലും, ക്ലാസിക് സി കംപൈലർ പിശക് സന്ദേശങ്ങൾ അനുകരിക്കുക.

മുന്നറിയിപ്പുകൾ


pmccabe സമാനതകളില്ലാത്ത ചുരുണ്ട ബ്രേസുകളാൽ അല്ലെങ്കിൽ ചിലപ്പോൾ സംഭവിക്കുന്ന പരാൻതീസിസുകളാൽ ആശയക്കുഴപ്പത്തിലാകുന്നു
തിടുക്കത്തിലുള്ള ഉപയോഗം സിപിപി നിർദ്ദേശങ്ങൾ. ഈ സന്ദർഭങ്ങളിൽ ഒരു ഡയഗ്നോസ്റ്റിക് പ്രിന്റ് ചെയ്യപ്പെടുകയും സങ്കീർണ്ണതയുമാണ്
പേരിട്ടിരിക്കുന്ന ഫയലുകളുടെ ഫലങ്ങൾ വിശ്വസനീയമല്ലായിരിക്കാം. മിക്കപ്പോഴും "#ifdef" നിർദ്ദേശങ്ങൾ ആയിരിക്കാം
ചുരുണ്ട ബ്രേസുകൾ പൊരുത്തപ്പെടുന്ന തരത്തിൽ പരിഷ്ക്കരിച്ചു. എങ്കിൽ ശ്രദ്ധിക്കുക pmccabe ഒരു ആശയക്കുഴപ്പത്തിലാണ് സിപിപി
നിർദ്ദേശം, ഏറ്റവും മനോഹരമായ പ്രിന്ററുകളും ആയിരിക്കും. ചില സന്ദർഭങ്ങളിൽ, ഉപയോഗിച്ച് പ്രീപ്രോസസ് ചെയ്യുന്നു unifdef(1)
ഉചിതമായിരിക്കാം.

സ്‌റ്റേറ്റ്‌മെന്റ് കൗണ്ടിംഗ് ഇതിലൂടെ മെച്ചപ്പെടുത്താം: കോമയുടെ സംഭവങ്ങൾ എണ്ണുന്നത്
ഓപ്പറേറ്റർ, ഒന്നിലധികം അസൈൻമെന്റുകൾ, സോപാധിക പരിശോധനകൾക്കുള്ളിലെ അസൈൻമെന്റുകൾ, ലോജിക്കൽ
സംയോജനം. എന്നിരുന്നാലും ഭാഷയിൽ നിന്ന് വ്യക്തമായ പ്രസ്താവനകളൊന്നും ഇല്ലാത്തതിനാൽ
ഞാൻ അന്വേഷിച്ച ആളുകളിൽ നിന്ന്, സ്റ്റേറ്റ്മെന്റ് കൗണ്ടിംഗ് മെച്ചപ്പെടില്ല. നിങ്ങൾക്ക് ഒരു ഉണ്ടെങ്കിൽ
വ്യക്തമായ നിർവചനം, അത് പരിഗണിക്കുന്നതിൽ എനിക്ക് സന്തോഷമുണ്ട്.

ടെംപ്ലേറ്റുകൾ കാരണമാകുന്നു pmccabeപുറത്തുകടക്കാൻ സ്കാനർ.

അത് ലജ്ജാകരമാണ് ctags ഔട്ട്പുട്ട് നൽകിയിട്ടില്ല.

onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് pmccabe ഓൺലൈനായി ഉപയോഗിക്കുക



ഏറ്റവും പുതിയ ലിനക്സ്, വിൻഡോസ് ഓൺലൈൻ പ്രോഗ്രാമുകൾ